log4net记录日志总结

       日志在生产环境排查定位问题的作用不多赘述,战过bug的都知道。目前公司的项目主要是用og4net记录日志,通过封装,实现了SQLServer、MySQL、MongoDB和文本日志的记录,便于在不同情境中使用。最近的一个项目首次使用log4net+MySQL记录日志,开发部署过程中遇到几个问题,在此简单总结一下,以便后面回顾。

  • log4net.config配置

1.响应项目的assembly文件中添加:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Config/log4net.config", Watch = true)]

2.log4net.config数据库及日志表配置


  • 自定义日志表字段

1.配置如下:


2.代码如下:

    public class CustomLayout: PatternLayout
    {
        public CustomLayout()
        {
            AddConverter("appid", typeof(CustomLogParameter.AppIdParameter));
            AddConverter("searchkey", typeof(CustomLogParameter.SearchKeyParameter));
        }
    }
    public class CustomLogParameter
    {
        internal sealed class SearchKeyParameter: PatternLayoutConverter
        {
            protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
            {
                CustomLogMessage message = loggingEvent.MessageObject as CustomLogMessage;
                if (message != null)
                {
                    writer.Write(message.SearchKey);
                }
            }
        }
        internal sealed class AppIdParameter : PatternLayoutConverter
        {
            protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
            {
                CustomLogMessage message = loggingEvent.MessageObject as CustomLogMessage;
                if (message != null)
                {
                    writer.Write(message.AppId);
                }
            }
        }
    }
3.参考文章: Log4net 自定义字段到数据库(二)
  • 部署第二天后没有日志输出

1.log4net.config添加配置如下:

      <!--数据库连接错误时重新连接 -->
      <param name="ReconnectOnError" value="true"/>

2.参考文章:log4net记录日志到数据库启动24小时后将无法向mysql数据库插入数据

猜你喜欢

转载自blog.csdn.net/yuanfei624/article/details/80938303