zoukankan      html  css  js  c++  java
  • Log4net的不能产生Log文件的问题

    【问题】

    用如下的步骤应用了Log4Net:

    1. 建立了一个公用的项目, 在里面引入了Log4net的Nuget package.
    2. 在公用的项目中建立了一个类,加上了Log4net的attribute.

    [assembly: log4net.Config.XmlConfigurator(Watch = true)]

    namespace MyNamespace.Common

    {

    public class LogHelper

    {

    static LogHelper()

    {

    var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");

    XmlConfigurator.ConfigureAndWatch(logCfg);

    }

    public static void WriteError(Type t, Exception ex)

    {

    log4net.ILog log = log4net.LogManager.GetLogger(t);

    log.Error("", ex);

    }

     

    public static void WriteLog(Type t, string msg)

    {

    log4net.ILog log = log4net.LogManager.GetLogger(t);

    //log.Info(msg + " ");

    log.Info(msg);

    }

     

     

    }

    }

     

    1. 建立了一个新项目,然后引用这个公用项目。
    2. 在这个新项目中加入了log4net.config文件。

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

    <configuration>

    <configSections>

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

    </configSections>

     

    <log4net>

    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">

    <!--日志路径-->

    <param name= "File" value= "Log/"/>

    <!--是否是向文件中追加日志-->

    <param name= "AppendToFile" value= "true"/>

    <!--log保留天数-->

    <param name= "MaxSizeRollBackups" value= "10"/>

    <!--日志文件名是否是固定不变的-->

    <param name= "StaticLogFileName" value= "false"/>

    <!--日志文件名格式为:2008-08-31.log-->

    <param name= "DatePattern" value= "yyyy-MM-dd&quot;.log&quot;"/>

    <!--日志根据日期滚动-->

    <param name= "RollingStyle" value= "Date"/>

    <layout type="log4net.Layout.PatternLayout">

    <param name="ConversionPattern" value="%n%date{HH:mm:ss,fff} [%-5level] %m" />

    </layout>

    </appender>

     

    <!-- 控制台前台显示日志 -->

    <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">

    <mapping>

    <level value="ERROR" />

    <foreColor value="Red, HighIntensity" />

    </mapping>

    <mapping>

    <level value="Info" />

    <foreColor value="Green" />

    </mapping>

    <layout type="log4net.Layout.PatternLayout">

    <conversionPattern value="%n%date{HH:mm:ss,fff} [%-5level] %m" />

    </layout>

     

    <filter type="log4net.Filter.LevelRangeFilter">

    <param name="LevelMin" value="Info" />

    <param name="LevelMax" value="Fatal" />

    </filter>

    </appender>

     

    <root>

    <!--() OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL () -->

    <level value="all" />

    <!--<appender-ref ref="ColoredConsoleAppender"/>-->

    <appender-ref ref="RollingLogFileAppender"/>

    </root>

    </log4net>

    </configuration>

     

    1. 在新项目的文件中记Log.

    LogHelper.WriteLog(typeof(MyClass), "here");

     

    进行了上述的步骤后,程序运行的时候,并没有 Log产生。

    【分析】

    调试了一下,发现在实际运行的时候,Loger各个级别的输出都成false了。

    这是怎么回事那?

     

    最后发现程序输出路径下并没有log4net.config,这样的结果就是log4net无法找到配置文件,所以就默认都禁止输出了。

     

    【解决方法】

    在程序中将log4net.config设置为总是拷贝到输出目录。

    这样,每次编译的时候,log4net.config就会被拷贝到程序的输出目录。

    再运行程序的时候,就有log产生了。

  • 相关阅读:
    XAMPP安装和配置
    Myeclipse下使用Maven搭建spring boot2.0项目
    activemq学习总结 (转)Java消息队列--ActiveMq 实战
    websocket学习总结
    Redis学习总结
    (转)使用OpenGL显示图像(七)Android OpenGLES2.0——纹理贴图之显示图片
    当网卡收到的包的目的地址是主机上另一个网卡的地址.arp总结
    当网卡收到一个包的目的地址是本主机其他接口的IP时.2
    网络设置中设置失败
    当网卡收到一个包的目的地址不是自己的地址时
  • 原文地址:https://www.cnblogs.com/time-is-life/p/8403617.html
Copyright © 2011-2022 走看看