C# 如何在一个应用程序中为不同的类创建不同的日志文件

C# 如何在一个应用程序中为不同的类创建不同的日志文件,c#,log4net,C#,Log4net,我试图在一个应用程序中为两个类创建两个不同的日志文件。除了程序运行时,在执行一个文件时会创建两个日志文件外,其他一切都正常工作。所以问题是,通过为一个appender调用对象创建了两个文件 代码如下: <log4net> <appender name="Class1" type="log4net.Appender.FileAppender"> <file value="c:\c1.log" /> <appendToFi

我试图在一个应用程序中为两个类创建两个不同的日志文件。除了程序运行时,在执行一个文件时会创建两个日志文件外,其他一切都正常工作。所以问题是,通过为一个appender调用对象创建了两个文件

代码如下:

<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");