【问题标题】:log4net to a class librarylog4net 到类库
【发布时间】:2020-03-31 07:17:48
【问题描述】:

我有一个附加到 Internet Explorer 的类库项目(资源管理器的附加组件),我想用 log4net 记录这个类库,我在项目中添加了一个 App.config 文件:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>
  <appSettings>
    <add key="log4net.Config" value="log4net.config"/>
    <add key="log4net.Config.Watch" value="True"/>
  </appSettings>

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="RollingFileAppenderSize" type="log4net.Appender.RollingFileAppender">
      <file value="FromLog4netLon.log" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <encoding value="utf-8" />
      <maximumFileSize value="10MB" />
      <maxSizeRollBackups value="5" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{ABSOLUTE} [%logger] %level - %message%newline%exception" />
      </layout>
    </appender>
    <root>
      <level value="FATAL" />
      <level value="WARN" />
      <level value="INFO" />
      <level value="DEBUG" />
      <appender-ref ref="RollingFileAppenderSize" />
    </root>
  </log4net>
</configuration>

AssemblysInfo.cs下我加了[assembly: log4net.Config.XmlConfigurator(Watch = true)]

在我的项目中我添加了

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

我试着写成这样:

log.Info("test log");

我也尝试添加这个:

FileInfo fi = new FileInfo(@"D:\IExtonsionsTests\1\bin\Debug\ClassLibrary.dll.config");
log4net.Config.XmlConfigurator.Configure(fi);

但它不写日志文件,我错过了什么?

【问题讨论】:

    标签: c# log4net class-library


    【解决方案1】:

    确保您的文件值正确且路径确实存在。你错过了最重要的东西,记录器。只需在您的 appender 之后插入此代码:

    (如果您愿意,可以添加多个记录器)


    <logger name="STANDART" additivity="false">
            <level value="ALL"/>
            <appender-ref ref="RollingFileAppenderSize"/>
        </logger>
    

    您的代码应如下所示:

    public enum LoggerTypes
    {
        STANDART = 0
    }
    public class Logger1
    {
        private static readonly string _loggerConfigDic = "..\\..\\YOURFOLDER\\YOURFILENAME.xml";
        private static readonly List<string> _names = new List<string> { "STANDART" }; /*Logger names in config file*/
    
        public static ILog GetLogger(LoggerTypes loggerType)
        {
            var fileInfo = new FileInfo(_loggerConfigDic);
            XmlConfigurator.ConfigureAndWatch(fileInfo);
            return LogManager.GetLogger(_names[(int)loggerType]);
        }
    }
    
    public class myClass
    {
        public void SomeMethod()
        {
            var logger = Logger1.GetLogger(LoggerTypes.STANDART);
            logger.Debug("your message here");
        }
    }
    

    【讨论】:

    • 我收到log4net:ERROR XmlHierarchyConfigurator: No appender named [AutomaticFileAppender] could be found
    • 这就是我命名 MY appender 的方式。您的附加程序名称是“RollingFileAppenderSize”所以只需在配置中更改该名称即可:)(我将编辑帖子,以便您可以复制粘贴)
    • 它似乎奏效了。感谢您将答案标记为正确。如果您有任何问题或疑问,请随时提问(如果您需要 LoggerClass,我可以向您展示我的)快乐编码!
    • 你好了 ;-) YW
    猜你喜欢
    • 1970-01-01
    • 2014-12-28
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多