c# - 每个项目 C# 的 log4net 配置

标签 c# windows-services log4net

我有 3 个类库项目(ClassLib1.dll、ClassLib2.dll、ClassLib3.dll)。 一个 Windows 服务项目。 WindowsService1。

网络日志是为 Windows 服务项目配置的,log4net 在配置文件中为

    <log4net> 
    <root>
      <level value="all" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <file value="C:\\XX\\Logs\\{App_Name}\\{App_Name_Log_File_}" />
      <countDirection value="1" />
      <datePattern value="yyyyMMdd'.log'" />
      <staticLogFileName value="false" />
      <appendToFile value="true" />
      <rollingStyle value="Composite" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%utcdate{yyyy-MM-dd HH:mm:ss,fff} %-level [%thread] [%M %C] - %message%newline" />
      </layout>
    </appender>
  </log4net>

Windows 服务指的是调用 3 个类库项目。 我如何为这 3 个类库配置 log4 net,以便我可以在单独的文件夹中拥有一个日志文件,如下所示?

对于主窗口服务 C:\XX\Logs\Win_Servive\Win_Service_Log_File_.log 对于类库 1 C:\XX\Logs\ClassLib1\ClassLib1_Log_File_.log 对于 Class Lib 2 C:\XX\Logs\ClassLib2\ClassLib2_Log_File_.log 对于第 3 类 C:\XX\Logs\ClassLib3\ClassLib3_Log_File_.log

最佳答案

您可以通过在 web.config 文件上配置三个不同的附加程序,然后按名称加载三个不同的记录器来实现此目的:

 <appender name="Class1Appender" type="log4net.Appender.RollingFileAppender" additivity="false">....</appender>
 <appender name="Class2Appender" type="log4net.Appender.RollingFileAppender" additivity="false">....</appender>
 <appender name="Class3Appender" type="log4net.Appender.RollingFileAppender" additivity="false">....</appender>

然后使用适当的记录器:

ILog class1Log = LogManager.GetLogger("Class1Appender");
ILog class2Log = LogManager.GetLogger("Class2Appender");
ILog class3Log = LogManager.GetLogger("Class3Appender");

关于c# - 每个项目 C# 的 log4net 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44186631/

相关文章:

c# - 显示常见 EF 删除语句与引用约束冲突的友好错误

C#:将字符串插入另一个字符串 - 性能问题

java - 当我们手动将它作为 Windows 服务运行时,如何更改 tomcat 的 java_opts?

c# - 禁用 Active Record 的 Log4Net 日志记录

asp.net - 如何获取共享 error.cshtml 的异常详细信息

.net - Log4Net StringMatchFilter 不过滤任何内容

c# - 如何从json对象中获取key并转换为数组?

C# web 控件是否会在 visible 为 false 时显示

c# - 安装窗口服务 System.Security.SecurityException 时出错

sql-server - 如何在Delphi中使用多线程设计请求处理?