C#, .Net添加log4net日志功能

添加NuGet包log4net

log4net.config配置文件并设置始终复制

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net"
      type="log4net.Config.Log4NetConfigurationSectionHandler,&#xD;&#xA;log4net-net-1.0"/>
  </configSections>
  <log4net>
    <appender name="AppLog" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="SysLog\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxSizeRollBackups" value="-1" />
      <!--最小锁定模型以允许多个进程可以写入同一个文件-->
      <param name="lockingModel"  type="log4net.Appender.FileAppender+MinimalLock" />
      <param name="MaximumFileSize" value="10MB" />
      <param name="RollingStyle" value="Size" />
      <param name="DatePattern" value="yyyy-MM-dd" />
      <param name="StaticLogFileName" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%-5p %d [%c] %m%n" />
      </layout>
    </appender>
    <logger name="AppLog">
      <level value="all" />
      <appender-ref ref="AppLog" />
    </logger> 
    <root>
      <level value="all" />
    </root>
  </log4net>
</configuration>

log4net类

public class AppLog
{
    private static string filepath = AppDomain.CurrentDomain.BaseDirectory + @"\SysLog\";
 
    private static readonly log4net.ILog logComm = log4net.LogManager.GetLogger("AppLog");
 
    static AppLog()
    {
        log4net.Config.XmlConfigurator.Configure(new FileInfo("log4net.config"));
 
        if (!Directory.Exists(filepath))
        {
            Directory.CreateDirectory(filepath);
        }
    }
 
    /// <summary>
    /// 输出系统日志
    /// </summary>
    /// <param name="msg">信息内容</param>
    /// <param name="source">信息来源</param>
    private static void WriteLog(string msg, bool isWrite, Action<object> action)
    {
        if (isWrite)
        {
            string filename = "AppLog_" + DateTime.Now.ToString("yyyyMMdd_HH") + ".log";
            var repository = LogManager.GetRepository();
 
            #region MyRegion
            var appenders = repository.GetAppenders();
            if (appenders.Length > 0)
            {
                RollingFileAppender targetApder = null;
                foreach (var Apder in appenders)
                {
                    if (Apder.Name == "AppLog")
                    {
                        targetApder = Apder as RollingFileAppender;
                        break;
                    }
                }
                if (targetApder.Name == "AppLog")//如果是文件输出类型日志,则更改输出路径
                {
                    if (targetApder != null)
                    {
                        if (!targetApder.File.Contains(filename))
                        {
                            targetApder.File = @"SysLog\" + filename;
                            targetApder.ActivateOptions();
                        }
                    }
                }
            }
 
            #endregion
            action(msg);
            //logComm.Error(msg + "\n");
        }
    }
    public static void WriteError(string msg, bool isWrite)
    {
        WriteLog(msg, isWrite, logComm.Error);
    }
    public static void WriteInfo(string msg, bool isWrite)
    {
        WriteLog(msg, isWrite, logComm.Info);
    }
    public static void WriteWarn(string msg, bool isWrite)
    {
        WriteLog(msg, isWrite, logComm.Warn);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值