已启用 log4net,但未创建任何文件
log4net enabled, but not creating any files
我已经了解了如何使用 log4net 并获得了要使用的配置文件。我丢失了这个配置文件,现在我无法让它工作。出于某种原因,配置它的人在 app.config 中有配置信息时无法让它工作,所以他将它放在输出文件夹中的 log4net.config 中。
然后他在程序启动时调用了这个:
var logConfig = Path.Combine(Path.GetDirectoryName(typeof(App).Assembly.Location), "log4net.config");
var configStream = new FileInfo(logConfig);
log4net.Config.XmlConfigurator.Configure(configStream);
而且它运行得非常完美。
现在我让它在新的控制台项目中完美运行。然而,我几乎所有的项目都是另一个应用程序的插件,所以我的项目类型是 class 由这个其他应用程序(称为 Revit)加载的库。
无论如何,我知道我可以登录,但就是无法正常工作...
这是我使用的log4net.config:
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<file value="logs\" />
<datePattern value="dd.MM.yyyy'.log'" />
<staticLogFileName value="false" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="5MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingFileAppender"/>
</root>
</log4net>
我想从中记录内容的每个 class 都在 class 级别上声明了一个 ILog 实例。
像这样:
static private ILog _logger = LogManager.GetLogger(typeof(Program));
ILog 实例报告已启用所有日志记录(调试等),但未创建任何文件。
我还需要做其他事情吗?
我快疯了!
感谢您的帮助!
在 App.config 文件中,您应该添加此代码以注册 log4net 部分处理程序并生成日志
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
......
</configuration>
或检查您的 AssemblyInfo.cs 文件是否有此代码:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
您似乎尝试了几种不同的方法来配置 log4net。如果失败,最好的选择是启用 log4net 调试以查看您的记录器是否 working/crashed。在你的 app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
...
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\tmp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
我已经了解了如何使用 log4net 并获得了要使用的配置文件。我丢失了这个配置文件,现在我无法让它工作。出于某种原因,配置它的人在 app.config 中有配置信息时无法让它工作,所以他将它放在输出文件夹中的 log4net.config 中。
然后他在程序启动时调用了这个:
var logConfig = Path.Combine(Path.GetDirectoryName(typeof(App).Assembly.Location), "log4net.config");
var configStream = new FileInfo(logConfig);
log4net.Config.XmlConfigurator.Configure(configStream);
而且它运行得非常完美。
现在我让它在新的控制台项目中完美运行。然而,我几乎所有的项目都是另一个应用程序的插件,所以我的项目类型是 class 由这个其他应用程序(称为 Revit)加载的库。
无论如何,我知道我可以登录,但就是无法正常工作... 这是我使用的log4net.config:
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<file value="logs\" />
<datePattern value="dd.MM.yyyy'.log'" />
<staticLogFileName value="false" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="5MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingFileAppender"/>
</root>
</log4net>
我想从中记录内容的每个 class 都在 class 级别上声明了一个 ILog 实例。 像这样:
static private ILog _logger = LogManager.GetLogger(typeof(Program));
ILog 实例报告已启用所有日志记录(调试等),但未创建任何文件。
我还需要做其他事情吗?
我快疯了! 感谢您的帮助!
在 App.config 文件中,您应该添加此代码以注册 log4net 部分处理程序并生成日志
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
......
</configuration>
或检查您的 AssemblyInfo.cs 文件是否有此代码:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
您似乎尝试了几种不同的方法来配置 log4net。如果失败,最好的选择是启用 log4net 调试以查看您的记录器是否 working/crashed。在你的 app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
...
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\tmp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
</configuration>