Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# log4net到类库_C#_Log4net_Class Library - Fatal编程技术网

C# log4net到类库

C# log4net到类库,c#,log4net,class-library,C#,Log4net,Class Library,我有一个类库项目附加到internet explorer(explorer的附加组件),我想用log4net记录这个类库,我在项目中添加了App.config文件: <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="log4net.Config" value="log4net.config"/> <add key

我有一个类库项目附加到internet explorer(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>
我试着这样写:

log.Info("test log");
我还想补充一点:

FileInfo fi = new FileInfo(@"D:\IExtonsionsTests\1\bin\Debug\ClassLibrary.dll.config");
log4net.Config.XmlConfigurator.Configure(fi);
但它不写日志文件,我遗漏了什么


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

(如果需要,可以添加多个记录器)




您的代码应该如下所示:
公共枚举日志类型
{
标准件=0
}
公共类记录器1
{
私有静态只读字符串_loggerConfigDic=“..\\..\\YOURFOLDER\\YOURFILENAME.xml”;
私有静态只读列表_names=新列表{“STANDART”};/*配置文件中的记录器名称*/
公共静态ILog GetLogger(LoggerTypes loggerType)
{
var fileInfo=新的fileInfo(_loggerConfigDic);
XmlConfigurator.ConfigureAndWatch(fileInfo);
返回LogManager.GetLogger(_names[(int)loggerType]);
}
}
公共类myClass
{
公共方法()
{
var logger=Logger1.GetLogger(LoggerTypes.STANDART);
Debug(“您的消息在此”);
}
}

我得到了
log4net:ERROR XmlHierarchyConfigurator:找不到名为[AutomaticFileAppender]的appender
这就是我命名appender的方式。您的appenders名称是“RollingFileAppenderSize”,所以只需在配置中更改该名称,您就可以开始了:)(我将编辑帖子,以便您可以复制粘贴它)它似乎起到了作用。谢谢你把答案标记为正确。如果您有任何问题,请随时提问(如果您需要LoggerClass,我可以向您展示我的)快乐编码!好了,好了;-)YW
FileInfo fi = new FileInfo(@"D:\IExtonsionsTests\1\bin\Debug\ClassLibrary.dll.config");
log4net.Config.XmlConfigurator.Configure(fi);
<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");
    }
}