mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Tweaking amount of logging done in extension loaders
--HG-- branch : dev
This commit is contained in:
@@ -3,16 +3,14 @@ using System.Linq;
|
||||
using System.Reflection;
|
||||
using Orchard.Environment.Extensions.Models;
|
||||
using Orchard.FileSystems.Dependencies;
|
||||
using Orchard.FileSystems.VirtualPath;
|
||||
using Orchard.Logging;
|
||||
|
||||
namespace Orchard.Environment.Extensions.Loaders {
|
||||
public class AreaExtensionLoader : ExtensionLoaderBase {
|
||||
private readonly IDependenciesFolder _dependenciesFolder;
|
||||
|
||||
public AreaExtensionLoader(IDependenciesFolder dependenciesFolder)
|
||||
: base(dependenciesFolder) {
|
||||
_dependenciesFolder = dependenciesFolder;
|
||||
|
||||
Logger = NullLogger.Instance;
|
||||
}
|
||||
|
||||
@@ -32,8 +30,8 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
return null;
|
||||
}
|
||||
|
||||
public override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||
Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
||||
protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||
//Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
||||
|
||||
var assembly = Assembly.Load("Orchard.Web");
|
||||
|
||||
|
@@ -1,10 +1,8 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Orchard.Caching;
|
||||
using Orchard.Environment.Extensions.Models;
|
||||
using Orchard.FileSystems.Dependencies;
|
||||
using Orchard.FileSystems.VirtualPath;
|
||||
using Orchard.Logging;
|
||||
|
||||
namespace Orchard.Environment.Extensions.Loaders {
|
||||
@@ -12,11 +10,10 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
/// Load an extension by looking into specific namespaces of the "Orchard.Core" assembly
|
||||
/// </summary>
|
||||
public class CoreExtensionLoader : ExtensionLoaderBase {
|
||||
private readonly IDependenciesFolder _dependenciesFolder;
|
||||
|
||||
public CoreExtensionLoader(IDependenciesFolder dependenciesFolder)
|
||||
: base(dependenciesFolder) {
|
||||
_dependenciesFolder = dependenciesFolder;
|
||||
|
||||
Logger = NullLogger.Instance;
|
||||
}
|
||||
|
||||
@@ -36,8 +33,8 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
return null;
|
||||
}
|
||||
|
||||
public override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||
Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
||||
protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||
//Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
||||
|
||||
var assembly = Assembly.Load("Orchard.Core");
|
||||
|
||||
|
@@ -55,6 +55,7 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
// Since a dynamic assembly is not active anymore, we need to notify ASP.NET
|
||||
// that a new site compilation is needed (since ascx files may be referencing
|
||||
// this now removed extension).
|
||||
Logger.Information("ExtensionRemoved: Module \"{0}\" has been removed, forcing site recompilation");
|
||||
ctx.ResetSiteCompilation = true;
|
||||
}
|
||||
|
||||
@@ -62,12 +63,13 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
// Since a dynamic assembly is not active anymore, we need to notify ASP.NET
|
||||
// that a new site compilation is needed (since ascx files may be referencing
|
||||
// this now removed extension).
|
||||
Logger.Information("ExtensionDeactivated: Module \"{0}\" has been de-activated, forcing site recompilation");
|
||||
ctx.ResetSiteCompilation = true;
|
||||
}
|
||||
|
||||
public override void ExtensionActivated(ExtensionLoadingContext ctx, ExtensionDescriptor extension) {
|
||||
if (_reloadWorkaround.AppDomainRestartNeeded) {
|
||||
Logger.Information("ExtensionActivated: Setting AppDomain for restart because csproj for module \"{0}\" changed and will need to be re-compiled", extension.Name);
|
||||
Logger.Information("ExtensionActivated: Module \"{0}\" has changed, forcing AppDomain restart", extension.Name);
|
||||
ctx.RestartAppDomain = _reloadWorkaround.AppDomainRestartNeeded;
|
||||
}
|
||||
}
|
||||
@@ -85,13 +87,13 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
};
|
||||
}
|
||||
|
||||
public override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||
protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||
string projectPath = GetProjectPath(descriptor);
|
||||
if (projectPath == null)
|
||||
return null;
|
||||
|
||||
var assembly = _buildManager.GetCompiledAssembly(projectPath);
|
||||
Logger.Information("Loading extension \"{0}\": assembly name=\"{1}\"", descriptor.Name, assembly.GetName().Name);
|
||||
//Logger.Information("Loading extension \"{0}\": assembly name=\"{1}\"", descriptor.Name, assembly.GetName().Name);
|
||||
|
||||
return new ExtensionEntry {
|
||||
Descriptor = descriptor,
|
||||
|
@@ -7,7 +7,7 @@ using Orchard.FileSystems.Dependencies;
|
||||
|
||||
namespace Orchard.Environment.Extensions.Loaders {
|
||||
public abstract class ExtensionLoaderBase : IExtensionLoader {
|
||||
private readonly IDependenciesFolder _dependenciesFolder;
|
||||
protected readonly IDependenciesFolder _dependenciesFolder;
|
||||
|
||||
protected ExtensionLoaderBase(IDependenciesFolder dependenciesFolder) {
|
||||
_dependenciesFolder = dependenciesFolder;
|
||||
@@ -31,7 +31,7 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
public virtual void ExtensionRemoved(ExtensionLoadingContext ctx, DependencyDescriptor dependency) { }
|
||||
public virtual void Monitor(ExtensionDescriptor extension, Action<IVolatileToken> monitor) { }
|
||||
|
||||
public abstract ExtensionEntry LoadWorker(ExtensionDescriptor descriptor);
|
||||
protected abstract ExtensionEntry LoadWorker(ExtensionDescriptor descriptor);
|
||||
|
||||
public virtual string GetWebFormAssemblyDirective(DependencyDescriptor dependency) {
|
||||
return null;
|
||||
|
@@ -13,21 +13,20 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
/// extension directory.
|
||||
/// </summary>
|
||||
public class PrecompiledExtensionLoader : ExtensionLoaderBase {
|
||||
private readonly IDependenciesFolder _dependenciesFolder;
|
||||
private readonly IAssemblyProbingFolder _assemblyProbingFolder;
|
||||
private readonly IVirtualPathProvider _virtualPathProvider;
|
||||
private readonly IVirtualPathMonitor _virtualPathMonitor;
|
||||
|
||||
public PrecompiledExtensionLoader(IDependenciesFolder dependenciesFolder,
|
||||
IAssemblyProbingFolder assemblyProbingFolder,
|
||||
public PrecompiledExtensionLoader(IDependenciesFolder dependenciesFolder,
|
||||
IAssemblyProbingFolder assemblyProbingFolder,
|
||||
IVirtualPathProvider virtualPathProvider,
|
||||
IVirtualPathMonitor virtualPathMonitor)
|
||||
: base(dependenciesFolder) {
|
||||
|
||||
_dependenciesFolder = dependenciesFolder;
|
||||
_assemblyProbingFolder = assemblyProbingFolder;
|
||||
_virtualPathProvider = virtualPathProvider;
|
||||
_virtualPathMonitor = virtualPathMonitor;
|
||||
|
||||
Logger = NullLogger.Instance;
|
||||
}
|
||||
|
||||
@@ -45,11 +44,15 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
|
||||
public override void ExtensionRemoved(ExtensionLoadingContext ctx, DependencyDescriptor dependency) {
|
||||
if (_assemblyProbingFolder.AssemblyExists(dependency.Name)) {
|
||||
ctx.DeleteActions.Add(() => _assemblyProbingFolder.DeleteAssembly(dependency.Name));
|
||||
ctx.DeleteActions.Add(
|
||||
() => {
|
||||
Logger.Information("ExtensionRemoved: Deleting assembly \"{0}\" from probing directory", dependency.Name);
|
||||
_assemblyProbingFolder.DeleteAssembly(dependency.Name);
|
||||
});
|
||||
|
||||
// We need to restart the appDomain if the assembly is loaded
|
||||
if (IsAssemblyLoaded(dependency.Name)) {
|
||||
Logger.Information("Extension removed: Setting AppDomain for restart because assembly {0} is loaded", dependency.Name);
|
||||
Logger.Information("ExtensionRemoved: Module \"{0}\" is removed and its assembly is loaded, forcing AppDomain restart", dependency.Name);
|
||||
ctx.RestartAppDomain = true;
|
||||
}
|
||||
}
|
||||
@@ -65,9 +68,10 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
|
||||
if (copyAssembly) {
|
||||
ctx.CopyActions.Add(() => _assemblyProbingFolder.StoreAssembly(extension.Name, sourceFileName));
|
||||
|
||||
// We need to restart the appDomain if the assembly is loaded
|
||||
if (IsAssemblyLoaded(extension.Name)) {
|
||||
Logger.Information("Extension activated: Setting AppDomain for restart because assembly {0} is loaded", extension.Name);
|
||||
Logger.Information("ExtensionRemoved: Module \"{0}\" is activated with newer file and its assembly is loaded, forcing AppDomain restart", extension.Name);
|
||||
ctx.RestartAppDomain = true;
|
||||
}
|
||||
}
|
||||
@@ -75,11 +79,15 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
|
||||
public override void ExtensionDeactivated(ExtensionLoadingContext ctx, ExtensionDescriptor extension) {
|
||||
if (_assemblyProbingFolder.AssemblyExists(extension.Name)) {
|
||||
ctx.DeleteActions.Add(() => _assemblyProbingFolder.DeleteAssembly(extension.Name));
|
||||
ctx.DeleteActions.Add(
|
||||
() => {
|
||||
Logger.Information("ExtensionDeactivated: Deleting assembly \"{0}\" from probing directory", extension.Name);
|
||||
_assemblyProbingFolder.DeleteAssembly(extension.Name);
|
||||
});
|
||||
|
||||
// We need to restart the appDomain if the assembly is loaded
|
||||
if (IsAssemblyLoaded(extension.Name)) {
|
||||
Logger.Information("Extension deactivated: Setting AppDomain for restart because assembly {0} is loaded", extension.Name);
|
||||
Logger.Information("ExtensionDeactivated: Module \"{0}\" is deactivated and its assembly is loaded, forcing AppDomain restart", extension.Name);
|
||||
ctx.RestartAppDomain = true;
|
||||
}
|
||||
}
|
||||
@@ -106,12 +114,12 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
};
|
||||
}
|
||||
|
||||
public override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||
protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||
var assembly = _assemblyProbingFolder.LoadAssembly(descriptor.Name);
|
||||
if (assembly == null)
|
||||
return null;
|
||||
|
||||
Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
||||
//Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
||||
|
||||
return new ExtensionEntry {
|
||||
Descriptor = descriptor,
|
||||
|
@@ -1,5 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using Orchard.Environment.Extensions.Models;
|
||||
using Orchard.FileSystems.Dependencies;
|
||||
using Orchard.Logging;
|
||||
@@ -35,11 +34,15 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
|
||||
public override void ExtensionRemoved(ExtensionLoadingContext ctx, DependencyDescriptor dependency) {
|
||||
if (_assemblyProbingFolder.AssemblyExists(dependency.Name)) {
|
||||
ctx.DeleteActions.Add(() => _assemblyProbingFolder.DeleteAssembly(dependency.Name));
|
||||
ctx.DeleteActions.Add(
|
||||
() => {
|
||||
Logger.Information("ExtensionRemoved: Deleting assembly \"{0}\" from probing directory", dependency.Name);
|
||||
_assemblyProbingFolder.DeleteAssembly(dependency.Name);
|
||||
});
|
||||
|
||||
// We need to restart the appDomain if the assembly is loaded
|
||||
if (IsAssemblyLoaded(dependency.Name)) {
|
||||
Logger.Information("Extension removed: Setting AppDomain for restart because assembly {0} is loaded", dependency.Name);
|
||||
Logger.Information("ExtensionRemoved: Module \"{0}\" is removed and its assembly is loaded, forcing AppDomain restart", dependency.Name);
|
||||
ctx.RestartAppDomain = true;
|
||||
}
|
||||
}
|
||||
@@ -47,11 +50,15 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
|
||||
public override void ExtensionDeactivated(ExtensionLoadingContext ctx, ExtensionDescriptor extension) {
|
||||
if (_assemblyProbingFolder.AssemblyExists(extension.Name)) {
|
||||
ctx.DeleteActions.Add(() => _assemblyProbingFolder.DeleteAssembly(extension.Name));
|
||||
ctx.DeleteActions.Add(
|
||||
() => {
|
||||
Logger.Information("ExtensionDeactivated: Deleting assembly \"{0}\" from probing directory", extension.Name);
|
||||
_assemblyProbingFolder.DeleteAssembly(extension.Name);
|
||||
});
|
||||
|
||||
// We need to restart the appDomain if the assembly is loaded
|
||||
if (IsAssemblyLoaded(extension.Name)) {
|
||||
Logger.Information("Extension deactivated: Setting AppDomain for restart because assembly {0} is loaded", extension.Name);
|
||||
Logger.Information("ExtensionDeactivated: Module \"{0}\" is deactivated and its assembly is loaded, forcing AppDomain restart", extension.Name);
|
||||
ctx.RestartAppDomain = true;
|
||||
}
|
||||
}
|
||||
@@ -73,12 +80,12 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
};
|
||||
}
|
||||
|
||||
public override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||
protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||
var assembly = _assemblyProbingFolder.LoadAssembly(descriptor.Name);
|
||||
if (assembly == null)
|
||||
return null;
|
||||
|
||||
Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
||||
//Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
||||
|
||||
return new ExtensionEntry {
|
||||
Descriptor = descriptor,
|
||||
|
@@ -13,13 +13,11 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
/// Load an extension by looking through the BuildManager referenced assemblies
|
||||
/// </summary>
|
||||
public class ReferencedExtensionLoader : ExtensionLoaderBase {
|
||||
private readonly IDependenciesFolder _dependenciesFolder;
|
||||
private readonly IVirtualPathProvider _virtualPathProvider;
|
||||
|
||||
public ReferencedExtensionLoader(IDependenciesFolder dependenciesFolder, IVirtualPathProvider virtualPathProvider)
|
||||
: base(dependenciesFolder) {
|
||||
|
||||
_dependenciesFolder = dependenciesFolder;
|
||||
_virtualPathProvider = virtualPathProvider;
|
||||
Logger = NullLogger.Instance;
|
||||
}
|
||||
@@ -29,9 +27,21 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
public override int Order { get { return 20; } }
|
||||
|
||||
public override void ExtensionDeactivated(ExtensionLoadingContext ctx, ExtensionDescriptor extension) {
|
||||
var assemblyPath = _virtualPathProvider.Combine("~/bin", extension.Name + ".dll");
|
||||
DeleteAssembly(ctx, extension.Name);
|
||||
}
|
||||
|
||||
public override void ExtensionRemoved(ExtensionLoadingContext ctx, DependencyDescriptor dependency) {
|
||||
DeleteAssembly(ctx, dependency.Name);
|
||||
}
|
||||
|
||||
private void DeleteAssembly(ExtensionLoadingContext ctx, string moduleName) {
|
||||
var assemblyPath = _virtualPathProvider.Combine("~/bin", moduleName + ".dll");
|
||||
if (_virtualPathProvider.FileExists(assemblyPath)) {
|
||||
ctx.DeleteActions.Add(() => File.Delete(_virtualPathProvider.MapPath(assemblyPath)));
|
||||
ctx.DeleteActions.Add(
|
||||
() => {
|
||||
Logger.Information("ExtensionRemoved: Deleting assembly \"{0}\" from bin directory (AppDomain will restart)", moduleName);
|
||||
File.Delete(_virtualPathProvider.MapPath(assemblyPath));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,7 +64,7 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
};
|
||||
}
|
||||
|
||||
public override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||
protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
|
||||
if (HostingEnvironment.IsHosted == false)
|
||||
return null;
|
||||
|
||||
@@ -65,7 +75,7 @@ namespace Orchard.Environment.Extensions.Loaders {
|
||||
if (assembly == null)
|
||||
return null;
|
||||
|
||||
Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
||||
//Logger.Information("Loading extension \"{0}\"", descriptor.Name);
|
||||
|
||||
return new ExtensionEntry {
|
||||
Descriptor = descriptor,
|
||||
|
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using Orchard.FileSystems.AppData;
|
||||
using Orchard.Logging;
|
||||
|
||||
namespace Orchard.FileSystems.Dependencies {
|
||||
public class DefaultAssemblyProbingFolder : IAssemblyProbingFolder {
|
||||
@@ -9,8 +10,12 @@ namespace Orchard.FileSystems.Dependencies {
|
||||
|
||||
public DefaultAssemblyProbingFolder(IAppDataFolder appDataFolder) {
|
||||
_appDataFolder = appDataFolder;
|
||||
|
||||
Logger = NullLogger.Instance;
|
||||
}
|
||||
|
||||
public ILogger Logger { get; set; }
|
||||
|
||||
public bool AssemblyExists(string moduleName) {
|
||||
var path = PrecompiledAssemblyPath(moduleName);
|
||||
return _appDataFolder.FileExists(path);
|
||||
@@ -39,11 +44,17 @@ namespace Orchard.FileSystems.Dependencies {
|
||||
|
||||
public void DeleteAssembly(string moduleName) {
|
||||
var path = PrecompiledAssemblyPath(moduleName);
|
||||
_appDataFolder.DeleteFile(path);
|
||||
|
||||
if (_appDataFolder.FileExists(path)) {
|
||||
Logger.Information("Deleting assembly for module \"{0}\" from probing directory", moduleName);
|
||||
_appDataFolder.DeleteFile(path);
|
||||
}
|
||||
}
|
||||
|
||||
public void StoreAssembly(string moduleName, string fileName) {
|
||||
var path = PrecompiledAssemblyPath(moduleName);
|
||||
|
||||
Logger.Information("Storing assembly file \"{0}\" for module \"{1}\"", fileName, moduleName);
|
||||
_appDataFolder.StoreFile(fileName, path);
|
||||
}
|
||||
|
||||
|
@@ -52,7 +52,7 @@ namespace Orchard.FileSystems.Dependencies {
|
||||
.Concat(file.Loaders.SelectMany(dl => dl.Loader.GetWebFormVirtualDependencies(dl.Descriptor)));
|
||||
|
||||
if (Logger.IsEnabled(LogLevel.Debug)) {
|
||||
Logger.Debug("GetFilHash(\"{0}\") - virtual path dependencies:", virtualPath);
|
||||
Logger.Debug("GetFileHash(\"{0}\") - virtual path dependencies:", virtualPath);
|
||||
foreach(var dependency in dependencies) {
|
||||
Logger.Debug(" Dependency: \"{0}\"", dependency);
|
||||
}
|
||||
@@ -61,7 +61,7 @@ namespace Orchard.FileSystems.Dependencies {
|
||||
}
|
||||
|
||||
public override VirtualFile GetFile(string virtualPath) {
|
||||
Logger.Debug("GetFile(\"{0}\")", virtualPath);
|
||||
//Logger.Debug("GetFile(\"{0}\")", virtualPath);
|
||||
var actualFile = Previous.GetFile(virtualPath);
|
||||
|
||||
return GetModuleCustomVirtualFile(virtualPath, actualFile) ??
|
||||
|
Reference in New Issue
Block a user