zoukankan      html  css  js  c++  java
  • log4net 简易封装

    using log4net;
    using log4net.Appender;
    using log4net.Config;
    using log4net.Core;
    using log4net.Layout;
    using System;
    using System.IO;
    using System.Web;
    
    namespace Utility
    {
        /// <summary>
        /// 简单封装log4net基本功能
        /// 1 无论log4net.config文件是否存在,都可以正常使用log4net.dll记录日志
        /// 2 支持两种类型的logger:SystemLogger和DatabaseLogger,还可以添加更多的logger对象
        /// </summary>
        public class Logger
        {
            private static readonly Type declaringType = typeof(Logger);
    
            protected static ILog SystemLog
            {
                get;
                private set;
            }
    
            protected static ILog DatabaseLog
            {
                get;
                private set;
            }
    
            static Logger()
            {
                const string fileName = "log4net.config";
                string basePath = HttpContext.Current != null
                    ? AppDomain.CurrentDomain.SetupInformation.PrivateBinPath
                    : AppDomain.CurrentDomain.BaseDirectory;
                string filePath = Path.Combine(basePath, fileName);
    
                if (File.Exists(filePath))
                {
                    XmlConfigurator.ConfigureAndWatch(new FileInfo(filePath));
                }
                else
                {
                    //默认设置(log4net 按装饰器模式实现,支持:ConsoleLog、FileLog、EventLog等不同方式)
                    RollingFileAppender appender = new RollingFileAppender
                    {
                        Name = "root",
                        File = "logs\log.txt",
                        AppendToFile = true,
                        RollingStyle = RollingFileAppender.RollingMode.Composite, //日期发生变化或日志文件大小超过10M,自动生成新的日志文件
                        DatePattern = "yyyyMMdd".txt"", //如果日期发了变化,自动保存历史日志文件,并生成新的日志文件
                        MaxSizeRollBackups = 5, //保留几个历史日志文件
                        Layout = new PatternLayout("[%d{yyyy-MM-dd HH:mm:ss.fff}] [%t] %-5level %logger property:[%property{NDC}] - %message%newline") //%m表示日志内容
                    };
    
                    BasicConfigurator.Configure(appender);
                    appender.ActivateOptions();
                }
    
                //为log4net添加不同类型的参数logger,用于配置选择哪种方式输出日志
                SystemLog = LogManager.GetLogger("SystemLogger"); //返回或新建一个命名的logger对象
                DatabaseLog = LogManager.GetLogger("DatabaseLogger");
            }
    
            private static void WriteLog(ILog log, Level level, Exception exception, string message)
            {
                log.Logger.Log(declaringType, level, message, exception);
            }
    
            #region 装饰器>>系统日志
    
            public static void Debug(string message, Exception exception = null)
            {
                WriteLog(SystemLog, Level.Debug, exception, message);
            }
    
            public static void Info(string message, Exception exception = null)
            {
                WriteLog(SystemLog, Level.Info, exception, message);
            }
    
            public static void Warn(string message, Exception exception = null)
            {
                WriteLog(SystemLog, Level.Warn, exception, message);
            }
    
            public static void Error(string message, Exception exception = null)
            {
                WriteLog(SystemLog, Level.Error, exception, message);
            }
    
            public static void Fatal(string message, Exception exception = null)
            {
                WriteLog(SystemLog, Level.Fatal, exception, message);
            }
    
            #endregion
    
            #region 装饰器>>数据库日志       
    
            public static void DatabaseInfo(string message, Exception exception = null)
            {
                WriteLog(DatabaseLog, Level.Info, exception, message);
            }
    
            public static void DatabaseWarn(string message, Exception exception = null)
            {
                WriteLog(DatabaseLog, Level.Warn, exception, message);
            }
    
            public static void DatabaseError(string message, Exception exception = null)
            {
                WriteLog(DatabaseLog, Level.Error, exception, message);
            }
    
            #endregion
        }
    }
  • 相关阅读:
    如何查找YUM安装的JAVA_HOME环境变量详解
    Linux下设置和查看环境变量
    jar包部署脚本
    CentOS7开启防火墙及特定端口
    nohup 命令(设置后台进程): appending output to ‘nohup.out’ 问题
    重点|183道Java面试题可以说很详细了
    JVM性能调优
    【Notepad++】notepad++主题和字体设置(非常好看舒服的)
    spring-boot-maven-plugin 安装本地jar 包
    UserAgentUtils 获取浏览器信息
  • 原文地址:https://www.cnblogs.com/hellowzl/p/9071574.html
Copyright © 2011-2022 走看看