欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[外包]!采用asp.net core 快速构建小型创业公司后台管理系统(四.Log4Net的简单配置)

程序员文章站 2022-05-29 23:45:36
[外包]!采用asp.net core 快速构建小型创业公司后台管理系统(四.Log4Net的简单配置) ......

接着上一章继续唠

这一章主要说一下

  • log4net在我项目里的配置,

另外群里有人说serilog是最好用的,这个我也用过,感觉就那样吧,以前还自己写log

一.基础配置类

  [外包]!采用asp.net core 快速构建小型创业公司后台管理系统(四.Log4Net的简单配置)

  infrastructure下直接一个log4net配置文件

  代码如下:

  

/// <summary>
    /// 日志服务
    /// </summary>
    public class log4net
    {
        /// <summary>
        /// 定义日志容器
        /// </summary>
        private static iloggerrepository _repository = logmanager.createrepository(tbconstant.log4repositorykey);
        /// <summary>
        /// 定义日志配置文件
        /// </summary>
        private static fileinfo logconfig = new fileinfo(configlocator.instance[tbconstant.log4netkey]);
        /// <summary>
        /// 定义接口参数
        /// </summary>
        /// <returns></returns>
        private static ilog setlog()
        {
            var _methodname = string.empty;
            try
            {
                stackframe _call = new stackframe(2);
                _methodname = string.format("{0}.{1}", _call.getmethod().reflectedtype.fullname, _call.getmethod().name);
                var _st = new stacktrace().getframes();
                foreach (var _item in _st)
                {
                    if (_item.getmethod().declaringtype.tostring().endswith("exception") && _st.length > 2)
                    {
                        _methodname = string.format("{0}.{1}", _item.getmethod().reflectedtype.fullname, _item.getmethod().name);
                        continue;
                    }
                }
            }
            catch { }
            xmlconfigurator.configure(_repository, logconfig);
            return logmanager.getlogger(_repository.name, _methodname);
        }

        #region 异常日志
        /// <summary>
        /// 异常日志
        /// </summary>
        /// <param name="msg">错误信息</param>
        public static void debug(object msg)
        {
            setlog().debug(msg);
        }
        /// <summary>
        /// 异常日志
        /// </summary>
        /// <param name="msg">错误信息</param>
        /// <param name="ex">异常信息</param>
        public static void debug(object msg, exception ex)
        {
            setlog().debug(msg, ex);
        }
        #endregion

        #region 错误日志
        /// <summary>
        /// 错误日志
        /// </summary>
        /// <param name="msg">错误信息</param>
        public static void error(object msg)
        {
            setlog().error(msg);
        }
        /// <summary>
        /// 错误日志
        /// </summary>
        /// <param name="msg">错误信息</param>
        /// <param name="ex">异常信息</param>
        public static void error(object msg, exception ex)
        {
            setlog().error(msg, ex);
        }
        #endregion

        #region 数据日志
        /// <summary>
        /// 数据日志
        /// </summary>
        /// <param name="msg">错误信息</param>
        public static void info(object msg)
        {
            setlog().info(msg);
        }
        /// <summary>
        /// 数据日志
        /// </summary>
        /// <param name="msg">错误信息</param>
        /// <param name="ex">异常信息</param>
        public static void info(object msg, exception ex)
        {
            setlog().info(msg, ex);
        }
        #endregion

        #region 警告日志
        /// <summary>
        /// 警告日志
        /// </summary>
        /// <param name="msg">错误信息</param>
        public static void warn(object msg)
        {
            setlog().warn(msg);
        }
        /// <summary>
        /// 警告日志
        /// </summary>
        /// <param name="msg">错误信息</param>
        /// <param name="ex">异常信息</param>
        public static void warn(object msg, exception ex)
        {
            setlog().warn(msg, ex);
        }
        #endregion
    }

  主要说一下这两句

     /// <summary>
        /// 定义日志容器
        /// </summary>
        private static iloggerrepository _repository = logmanager.createrepository(tbconstant.log4repositorykey);
        /// <summary>
        /// 定义日志配置文件
        /// </summary>
        private static fileinfo logconfig = new fileinfo(configlocator.instance[tbconstant.log4netkey]);
  createrepository里传入自定义key
 

  [外包]!采用asp.net core 快速构建小型创业公司后台管理系统(四.Log4Net的简单配置)

  第二句传入log4net配置文件路径

  如图:

  [外包]!采用asp.net core 快速构建小型创业公司后台管理系统(四.Log4Net的简单配置)

  代码如下:配置还是老配置

  

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <!--错误日志-->
    <appender name="errorrollingfileappender" type="log4net.appender.rollingfileappender">
      <lockingmodel type="log4net.appender.fileappender+minimallock" />
      <param name="file" value="log/error/" />
      <param name="appendtofile" value="true" />
      <param name="rollingstyle" value="date" />
      <param name="datepattern" value="yyyy-mm-dd.'error.log'" />
      <param name="staticlogfilename" value="false" />
      <layout type="log4net.layout.patternlayout">
        <conversionpattern value="%n%n%n记录时间:%date %n日志级别:  %-5level %n类及方法:%logger  %n描述:%message %newline%newline" />
      </layout>
      <filter type="log4net.filter.levelrangefilter">
        <param name="levelmin" value="error" />
        <param name="levelmax" value="error" />
      </filter>
    </appender>
    <!--警告日志-->
    <appender name="warnrollingfileappender" type="log4net.appender.rollingfileappender">
      <lockingmodel type="log4net.appender.fileappender+minimallock" />
      <param name="file" value="log/warn/" />
      <param name="appendtofile" value="true" />
      <param name="rollingstyle" value="date" />
      <param name="datepattern" value="yyyy-mm-dd.'warn.log'" />
      <param name="staticlogfilename" value="false" />
      <layout type="log4net.layout.patternlayout">
        <conversionpattern value="%n%n%n记录时间:%date %n日志级别:  %-5level %n类及方法:%logger  %n描述:%message %newline%newline" />
      </layout>
      <filter type="log4net.filter.levelrangefilter">
        <param name="levelmin" value="warn" />
        <param name="levelmax" value="warn" />
      </filter>
    </appender>
    <!--数据日志-->
    <appender name="inforollingfileappender" type="log4net.appender.rollingfileappender">
      <lockingmodel type="log4net.appender.fileappender+minimallock" />
      <param name="file" value="log/info/" />
      <param name="appendtofile" value="true" />
      <param name="rollingstyle" value="date" />
      <param name="datepattern" value="yyyy-mm-dd.'info.log'" />
      <param name="staticlogfilename" value="false" />
      <layout type="log4net.layout.patternlayout">
        <conversionpattern value="%n%n%n记录时间:%date %n日志级别:  %-5level %n类及方法:%logger  %n描述:%message %newline%newline" />
      </layout>
      <filter type="log4net.filter.levelrangefilter">
        <param name="levelmin" value="info" />
        <param name="levelmax" value="info" />
      </filter>
    </appender>
    <!--异常日志-->
    <appender name="debugrollingfileappender" type="log4net.appender.rollingfileappender">
      <lockingmodel type="log4net.appender.fileappender+minimallock" />
      <param name="file" value="log/debug/" />
      <param name="appendtofile" value="true" />
      <param name="rollingstyle" value="date" />
      <param name="datepattern" value="yyyy-mm-dd.'debug.log'" />
      <param name="staticlogfilename" value="false" />
      <layout type="log4net.layout.patternlayout">
        <conversionpattern value="%n%n%n记录时间:%date %n日志级别:  %-5level %n类及方法:%logger  %n描述:%message %newline%newline" />
      </layout>
      <filter type="log4net.filter.levelrangefilter">
        <param name="levelmin" value="debug" />
        <param name="levelmax" value="debug" />
      </filter>
    </appender>
    <root>
      <level value="debug" />
      <!--文件形式记录日志-->
      <appender-ref ref="errorrollingfileappender" />
      <appender-ref ref="debugrollingfileappender" />
      <appender-ref ref="inforollingfileappender" />
      <appender-ref ref="warnrollingfileappender" />
    </root>
  </log4net>
</configuration>

  二.测试结果

  

  [外包]!采用asp.net core 快速构建小型创业公司后台管理系统(四.Log4Net的简单配置)

  在你想记录日至的地方,直接用log4net点他的四种日志类型,info,error,warn,debug

  他会在你项目根目录下生成log文件夹,并包含四种类型日志,按日期划分

  [外包]!采用asp.net core 快速构建小型创业公司后台管理系统(四.Log4Net的简单配置)

  日志内容如下:

  [外包]!采用asp.net core 快速构建小型创业公司后台管理系统(四.Log4Net的简单配置)

  日志记录这块我就讲到这里

  另外今天我对这个项目加了quartz计划任务管理模块,还加了报表导出

  [外包]!采用asp.net core 快速构建小型创业公司后台管理系统(四.Log4Net的简单配置)

  

  [外包]!采用asp.net core 快速构建小型创业公司后台管理系统(四.Log4Net的简单配置)

  [外包]!采用asp.net core 快速构建小型创业公司后台管理系统(四.Log4Net的简单配置)

  这个内容就下一章唠吧

  下章内容

  • quartz计划任务管理
  • 权限模块
  • 备注:项目浏览地址:http://xingchenbeta.52expo.top/welcome
  • 用户名 admin 密码 123456
  • 不要使用admin 用户测试权限,不要禁用admin用户

[外包]!采用asp.net core 快速构建小型创业公司后台管理系统(四.Log4Net的简单配置)