我已经看过如何使用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);
它完美无缺。
现在我让它在一个新的控制台项目中完美地工作了。但是我的所有项目都是另一个应用程序的插件,因此我的项目类型是由其他应用程序(称为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>
我想记录内容的每个类都声明了类级别的ILog实例。 像这样:
static private ILog _logger = LogManager.GetLogger(typeof(Program));
ILog实例报告已启用所有日志记录(调试等),但没有创建任何文件。
我还需要做其他事吗?
我疯了! 谢谢你的帮助!
答案 0 :(得分:1)
您似乎尝试了几种不同的方法来配置log4net。如果一个失败,最好的选择是启用log4net调试以查看您的记录器是否正在工作/崩溃。在你的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>
答案 1 :(得分:0)
在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)]