C#之Log4net

1 篇文章 0 订阅

一、在app.config文件中,配置日志存放的格式与位置

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-2.0"/>
  </configSections>
  <log4net>
    <root>
      <appender-ref ref="ErrorLogFileAppender"/>
      <appender-ref ref="DebugLogFileAppender"/>
      <appender-ref ref="SqlLogFileAppender"/>
    </root>
    <!--记录错误-->
    <appender name="ErrorLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log\\Error\\" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <param name="MaxSizeRollBackups" value="100"/>
      <param name="StaticLogFileName" value="false"/>
      <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
      <staticLogFileName value="false"/>
      <encoding value="utf-8" />
      <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="conversionPattern" value="时间:%date%n线程:[%t]%n类型:%-5level%n调用类:%logger%n内容:%message%newline%n--------------------------------------------------------------------%n" />
      </layout>

      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="ERROR"/>
        <param name="LevelMax" value="ERROR"/>
      </filter>
    </appender>
    <!--记录调试日志-->
    <appender name="DebugLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log\\Debug\\" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <param name="MaxSizeRollBackups" value="100"/>
      <param name="StaticLogFileName" value="false"/>
      <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
      <staticLogFileName value="false"/>
      <encoding value="utf-8" />
      <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <!--<param name="ConversionPattern" value="[%p] [%d{MM/dd/yyyy HH:mm:ss,fff}] [%t] [%c]- %m%n"/>-->
        <param name="conversionPattern" value="时间:%date%n线程:[%t]%n类型:%-5level%n调用类:%logger%n内容:%message%newline%n--------------------------------------------------------------------%n" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG"/>
        <param name="LevelMax" value="DEBUG"/>
      </filter>
    </appender>

    <!--记录sql语句日志-->
    <appender name="SqlLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log\\Sql\\" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <param name="MaxSizeRollBackups" value="100"/>
      <param name="StaticLogFileName" value="false"/>
      <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
      <staticLogFileName value="false"/>
      <encoding value="utf-8" />
      <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="conversionPattern" value="时间:%date%n标题:%logger%n内容:%message%newline%n--------------------------------------------------------------------%n" />
      </layout>
    </appender>


    <!--调试模式,输出日志到控制台-->
    <appender name="ConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
      <mapping>
        <level value="ERROR"/>
        <foreColor value="Red, HighIntensity"/>
        <!--<backColor value="Green" />-->
      </mapping>
      <mapping>
        <level value="DEBUG"/>
        <foreColor value="Yellow, HighIntensity"/>
        <backColor value="Green"/>
      </mapping>
      <layout type="log4net.Layout.PatternLayout">
        <footer value="--------------------------------------------------------------------"/>
        <!--<param name="ConversionPattern" value="[%p] [%d{MM/dd/yyyy HH:mm:ss,fff}] [%t] [%c]- %m%n"/>-->
        <param name="conversionPattern" value="时间:%date%n线程:[%t]%n类型:%-5level%n标题:%logger%n内容:%message%newline%n--------------------------------------------------------------------%n" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG"/>
        <param name="LevelMax" value="ERROR"/>
      </filter>
    </appender>
  </log4net>
  <startup  useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>
二、在包含program.cs文件的程序集下面,找到Properties,在其下面的AssemblyInfo.cs中添加一句:[assembly: log4net.Config.XmlConfigurator(Watch = true)]

三、写一个类,在这个类的命名空间上加上一句:[assembly: log4net.Config.XmlConfigurator(Watch = true)],在类中写记录日志的调用方法,如

public class LogHelper
{
    public static void Debug(string message)
    {
        StackTrace trace = new StackTrace();
        StackFrame frame = trace.GetFrame(1);
        MethodBase method = frame.GetMethod();

        log4net.ILog log = log4net.LogManager.GetLogger(method.DeclaringType);
        if (log.IsDebugEnabled)
        {
            log.Debug(message);
        }
        log = null;
    }
}


四、调用方法,在引用项目后调用即可:

try
{
	//可能报错的代码
   	...
}
catch(Exception ex)
{
	LogHelper.Debug(ex.message);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值