ASP.NetCore+Layui 后台管理系统-Comm

Comm层

通过nuget 下载安装log4net、Newtonsoft.Json、QRCoder

1.配置日志Logger

需要在CoreApi_LayWeb层添加log4net.config配置文件,在Startup.cs中添加相关配置

log4net.config文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>

  <log4net>
    <!-- Debug 将日志以回滚文件的形式写到文件中 -->
    <appender name="RollingFileDebug" type="log4net.Appender.RollingFileAppender">
      <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
      <file value="Log\\Debug\\" />
      <!-- 将日志信息追加到已有的日志文件中-->
      <appendToFile value="true" />
      <param name="MaxFileSize" value="10240"/>
      <param name="MaxSizeRollBackups" value="100"/>
      <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!-- 指定按日期切分日志文件 -->
      <rollingStyle value="Date" />
      <!-- 日志文件的命名规则 -->
      <datePattern value="yyyy-MM-dd&quot;.log&quot;" />
      <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="【异常时间】:%date【线程ID】:%thread%newline【异常级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="Debug" />
        <param name="LevelMax" value="Debug" />
      </filter>
    </appender>

    <!-- Info 将日志以回滚文件的形式写到文件中 -->
    <appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender">
      <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
      <file value="Log\\Info\\" />
      <!-- 将日志信息追加到已有的日志文件中-->
      <appendToFile value="true" />
      <param name="MaxFileSize" value="10240"/>
      <param name="MaxSizeRollBackups" value="100"/>
      <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!-- 指定按日期切分日志文件 -->
      <rollingStyle value="Date" />
      <!-- 日志文件的命名规则 -->
      <datePattern value="yyyy-MM-dd&quot;.log&quot;" />
      <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="【异常时间】:%date【线程ID】:%thread%newline【异常级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="Info" />
        <param name="LevelMax" value="Info" />
      </filter>
    </appender>

 
    <!-- Error 将日志以回滚文件的形式写到文件中 -->
    <appender name="RollingFileError" type="log4net.Appender.RollingFileAppender">
      <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
      <file value="Log\\Error\\" />
      <!-- 将日志信息追加到已有的日志文件中-->
      <appendToFile value="true" />
      <param name="MaxFileSize" value="10240"/>
      <param name="MaxSizeRollBackups" value="100"/>
      <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!-- 指定按日期切分日志文件 -->
      <rollingStyle value="Date" />
      <!-- 日志文件的命名规则 -->
      <datePattern value="yyyy-MM-dd&quot;.log&quot;" />
      <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="【异常时间】:%date【线程ID】:%thread%newline【异常级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="Error" />
        <param name="LevelMax" value="Error" />
      </filter>
    </appender>

    <logger name="RollingLogFileAppender">
      <level value="ALL" />
      <appender-ref ref="RollingFileDebug" />
      <appender-ref ref="RollingFileInfo" />
      <appender-ref ref="RollingFileError" />
    </logger>

    <!--<root> 
    控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF   
    比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录  
     如果没有定义LEVEL的值,则缺省为DEBUG  
      <level value="ALL" /> 
       按日期切分日志文件,并将日期作为日志文件的名字  
      <appender-ref ref="RollingFileAppenderNameByDate" />
    </root>-->
  </log4net>
</configuration>

Startup.cs关于日志配置:

public static ILoggerRepository repository { get; set; }
public Startup(IConfiguration configuration)
{
    Configuration = configuration;
    repository = LogManager.CreateRepository("CoreApi");
    XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
}

 

记录日志公共方法:

Logger.cs

 public class Logger
    {
        private static ILog logger;
        static Logger()
        {
            logger = LogManager.GetLogger("CoreApi", "RollingLogFileAppender");
        }

        /// <summary>
        /// 调试信息
        /// </summary>
        /// <param name="message"></param>
        /// <param name="exception"></param>
        public static void Debug(string message, Exception exception = null)
        {
            if (logger.IsDebugEnabled)
            {
                if (exception == null)
                    logger.Debug(message);
                else
                    logger.Debug(FormartLog(message, exception));
            }
        }

        /// <summary>
        /// 一般信息
        /// </summary>
        /// <param name="message"></param>
        /// <param name="exception"></param>
        public static void Info(string message, Exception exception = null)
        {
            if (logger.IsInfoEnabled)
            {
                if (exception == null)
                    logger.Info(message);
                else
                    logger.Info(FormartLog(message, exception));
            }
        }


        /// <summary>
        /// 错误
        /// </summary>
        /// <param name="message"></param>
        /// <param name="exception"></param>
        public static void Error(string message, Exception exception = null)
        {
            if (logger.IsErrorEnabled)
            {
                if (exception == null)
                    logger.Error(message);
                else
                    logger.Error(FormartLog(message, exception));
            }
        }

   

        /// <summary>
        /// 自定义返回格式
        /// </summary>
        /// <param name="throwMsg"></param>
        /// <param name="ex"></param>
        /// <returns></returns>
        private static string FormartLog(string throwMsg, Exception ex)
        {
            return string.Format("【自定义内容】:{0} \r\n【异常类型】:{1} \r\n【异常信息】:{2} \r\n【堆栈调用】:{3}", new object[] { throwMsg, ex.GetType().Name, ex.Message, ex.StackTrace });
        }
    }

2.读取配置信息appsetting.json类:

ReadConfig.cs

public class ReadConfig
    {

        private static string _SqlServerConfig = "";
        /// <summary>
        /// sqlserver连接地址
        /// </summary>
        public static string SqlServerConfig
        {
            get
            {
                if (string.IsNullOrEmpty(_SqlServerConfig))
                {
                    _SqlServerConfig = Configuration.GetConnectionString("SqlServerConnection");
                }

                return _SqlServerConfig;
            }
        }

        public static string Uploader
        {
            get
            {
                return Configuration.GetConnectionString("uploader");
            }
        }
        /// <summary>
        /// Redis连接字符
        /// </summary>
        public static string RedisConfig
        {
            get
            {
                return Configuration.GetConnectionString("RedisConfig");
            }
        }

        public static IConfiguration Configuration { get; set; }
        static ReadConfig()
        {
            //ReloadOnChange = true 当appsettings.json被修改时重新加载            
            Configuration = new ConfigurationBuilder()
            .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })
            .Build();
        }

        /// <summary>
        /// 人员相关文件
        /// </summary>
        public static string EmployeeFilePath
        {
            get
            {
                return Configuration.GetConnectionString("EmployeeFilePath");
            }
        }
    }

3.公共类:

Utils.cs 主要方法:根据日期查询周天、MD5加密、生成制定位数的随机码(数字)、身份证号验证、 手机号校验、Json序列化与反序列化、生成二维码等

下一编:ASP.NetCore+Layui 后台管理系统-Web

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值