C# 如何在一个应用程序中为不同的类创建不同的日志文件
我试图在一个应用程序中为两个类创建两个不同的日志文件。除了程序运行时,在执行一个文件时会创建两个日志文件外,其他一切都正常工作。所以问题是,通过为一个appender调用对象创建了两个文件 代码如下:C# 如何在一个应用程序中为不同的类创建不同的日志文件,c#,log4net,C#,Log4net,我试图在一个应用程序中为两个类创建两个不同的日志文件。除了程序运行时,在执行一个文件时会创建两个日志文件外,其他一切都正常工作。所以问题是,通过为一个appender调用对象创建了两个文件 代码如下: <log4net> <appender name="Class1" type="log4net.Appender.FileAppender"> <file value="c:\c1.log" /> <appendToFi
<log4net>
<appender name="Class1" type="log4net.Appender.FileAppender">
<file value="c:\c1.log" />
<appendToFile value="false" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
<appender name="Class2" type="log4net.Appender.FileAppender">
<file value="c:\c2.log" />
<appendToFile value="false" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
<logger name="LogClass1" additivity="false">
<level value="ALL" />
<appender-ref ref="Class1" />
</logger>
<logger name="LogClass2" additivity="false">
<level value="ALL" />
<appender-ref ref="Class2" />
</logger>
</log4net>
调用Class1时,它会创建两个文件:
“c1.log”
和“c2.log”
。虽然c2.Log
是0 KB的文件
并且不包含任何数据。如何防止生成第二个文件?是否将
配置保存在App.config中,并调用XmlConfigurator.Configure()代码>?不确定,但这可能会触发创建所有引用的appender.log4net在调用Configure
时加载appender,加载过程的一部分是创建日志文件。@Filburt,我这样写的:App.Config
:
和AssemblyInfo.cs
:[程序集:log4net.Config.XmlConfigurator(Watch=true)]
目前,您无法停止文件的创建。Log4net无法知道您不打算使用它,也无法正确地为您创建它。如果您不想要它,也不打算使用它,为什么它会出现在配置中?@stuartd,我在其他类文件中使用该文件,就像在第一个文件中使用它一样。这种情况是在一个案例中从swtich case将运行时,Class1
将被调用,日志将使用LogClass1
记录器生成,而当其他case将被调用时,Class2
将被调用,日志将使用LogClass2
生成。现在,一切都在工作,但当调用Class1
时,将获取两个文件ing已创建,但我仅为LogClass1
logger创建了对象。
log4net.ILog log = log4net.LogManager.GetLogger("LogClass1");