log4net

官网:https://logging.apache.org/log4net/

文本列子下载地址: log4net.config

Level:ALL < DEBUG < INFO <WARN <ERROR < FATAL < OFF

root和logger:root是根级的,logger是专门设置某一个,如果同时满足,那就会都执行

 layout 下的  conversionPattern:

%   序列%%输出单个百分号
%n=%newline  "
", or "
"
%a 程序名称
%c  logger名称
%C=%class=%type 类型名    Log4Demo.Program   %type{1}=Program
%d 日期
%date=%date{yyyy:MM:dd HH:mm:ss,fff}   日期,可以自定义格式 
%exception  错误消息
%F=%file   文件路径  F:CodeWidowsServerLog4DemoProgram.cs
%l=%location   获取打印的位子   Log4Demo.Program.Main(F:CodeWidowsServerLog4DemoProgram.cs:20)
%p=%level  日志等级
%logger  获取logger名称,%logger{1}     只获取一个的长度,以 . 分割   Log4Demo.Program   Program
%m=%message   消息
&M=%method  方法名
%X=%mdc=%P=%properties=%property    属性
%r=%timestamp   时间戳
%stacktrace     Log4Demo.Program.Main
%stacktracedetail    Log4Demo.Program.Main()
%t=%thread  线程id
%x=%ndc

①nueget包进行引用

②添加一个log4net.config配置文件,设置属性   复制到出入目录:始终复制

 FileInfo log2 = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");
            log4net.Config.XmlConfigurator.Configure(log2);  //配置
            ILog log = log4net.LogManager.GetLogger(typeof(Program));//实例
            try
            {
                log.Info("打印哈哈");
                string a = "a";
                int i = int.Parse(a);
            }
            catch (Exception ex)
            {
                log.Error("cuowu", ex);
            }
            Console.ReadLine();

列子:ConsoleAppender

 <!-- 控制台日志,信息会打印到控制显示-->
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="【时间】:%date{yyyy:MM:dd HH:mm:ss}%n【等级】:%p%n【方法】:%stacktracedetail%n【信息】:%m" />
      </layout>
    </appender>

ColoredConsoleAppender
  <!--控制台打印颜色-->
    <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
      <mapping>
        <level value="ERROR" />
        <foreColor value="Red" />
        <!--<backColor value="Red, HighIntensity" />-->
      </mapping>
      <mapping>
        <level value="INFO" />
        <foreColor value="Green" />
        <!--<backColor value="Black, HighIntensity" />-->
      </mapping>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="【时间】:%date{yyyy:MM:dd HH:mm:ss}%n【等级】:%p%n【方法】:%stacktracedetail%n【信息】:%m%n" />
        <!--<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />-->
      </layout>
    </appender>

FileAppender
 <!--文件-->
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="log.txt" />  <!--文件名-->
      <appendToFile value="true" />  <!--是否追加-->
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="【时间】:%date{yyyy:MM:dd HH:mm:ss}%n【等级】:%p%n【方法】:%stacktracedetail%n【信息】:%m%n" />
      </layout>
    </appender>

到了我们的主要的了:

RollingLogFileAppender
普通的日志
 <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;.read.log&quot;"/>
      <!--日志根据日期滚动-->
      <param name= "RollingStyle" value= "Date"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date{HH:mm:ss,fff} %-5p-%m%n" />
      </layout>
    </appender>

 

 输出成htm查看,我们需要对我们的Info和Error输出到两个文件进行区分

 <!-- htm页面查看 -->
    <appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="logInfo" />
      <!--路径或者文件名-->
      <appendToFile value="true" />
      <!--是否追加-->
      <rollingStyle value="Composite" />
      <!--滚动规则-->
      <maxSizeRollBackups value="-1" />
      <!-- 备份文件的个数,只存一个设置为-1-->
      <maximumFileSize value="10MB" />
      <!-- 单个日志文件最大的大小-->
      <staticLogFileName value="false" />
      <!-- 是否使用静态文件名,这是设置为false,下面才能自定义-->
      <DatePattern   value="yyyyMMdd&quot;.htm&quot;" />
      <param name="Encoding" value="utf-8" />
      <layout type="log4net.Layout.PatternLayout">
        <!--这里的格式需要跟html中的样式一样去写
        &lt;BR>=<BR> 换行   这样类似的
        -->
        <conversionPattern value="&lt;HR COLOR=blue>【时间】:%date{yyyy:MM:dd HH:mm:ss}&lt;BR>【等级】:%p&lt;BR>【方法】:%stacktracedetail&lt;BR>【信息】:%m&lt;BR>&lt;HR Size=1>" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <!--使用过滤,只记录INFO和WARN-->
        <levelMin value="INFO" />
        <levelMax value="WARN" />
      </filter>
    </appender>

    <!-- htm页面查看错误-->
    <appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="logError" />
      <!--路径或者文件名-->
      <appendToFile value="true" />
      <!--是否追加-->
      <rollingStyle value="Composite" />
      <!--滚动规则-->
      <maxSizeRollBackups value="-1" />
      <!-- 备份文件的个数,只存一个设置为-1-->
      <maximumFileSize value="10MB" />
      <!-- 单个日志文件最大的大小-->
      <staticLogFileName value="false" />      
      <!-- 是否使用静态文件名,这是设置为false,下面才能自定义-->
      <DatePattern   value="yyyyMMdd&quot;.htm&quot;" />
      <param name="Encoding" value="utf-8" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="&lt;HR COLOR=red>【时间】:%date{yyyy:MM:dd HH:mm:ss}&lt;BR>【等级】:%p&lt;BR>【方法】:%stacktracedetail&lt;BR>【信息】:%m&lt;BR>&lt;HR Size=1>" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR" />
        <levelMax value="FATAL" />
      </filter>
    </appender>

      

Console控制台程序如何记录信息到我们的web端?

这里需要我们动态的取改变file路径来完成,在同一个解决方案下面,想把错误写在一起,你也可以直接设置file vlue="E:XXDD"

  FileInfo log2 = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");
            log4net.Config.XmlConfigurator.Configure(log2);  //配置

            string sw = AppDomain.CurrentDomain.BaseDirectory;//debug\  
            //得到解决方法路径
            string ww = GetDirectoryName(sw, 4);
            string filePath = Path.Combine(ww, "MvcTest\");//新的路径

            log4net.Repository.ILoggerRepository ilr = LogManager.GetRepository(); //获取仓储
            IAppender[] ap = ilr.GetAppenders(); //获取Appenders
            //通过查询得到你想要的Appenders,然后设置
            RollingFileAppender rf = ap.FirstOrDefault(x => x.Name == "InfoRollingFileAppender") as RollingFileAppender;
            rf.File = filePath+"Info\";
            rf.ActivateOptions(); //激活
            RollingFileAppender rf2 = ap.FirstOrDefault(x => x.Name == "ErrorRollingFileAppender") as RollingFileAppender;
            rf2.File = filePath+"Error\";
            rf2.ActivateOptions(); //激活
            ILog log = log4net.LogManager.GetLogger(typeof(Program));//实例

查看一下

原文地址:https://www.cnblogs.com/Sea1ee/p/10582210.html