zoukankan      html  css  js  c++  java
  • log4net的简单使用

    1、安装log4net插件
      在nuget包管理器查找log4net并安装,安装最新版本就行,如果不行,自行百度吧。在需要使用log4net的项目中引用它
    2、创建log4net.config
      在和web.config同一文件路径下创建log4net.config文件。创建完成之后,设置其属性:复制到输出目录。并在其中加入以下设置

    <?xml version="1.0"?>
    <configuration>
    	<configSections>
    		<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    	</configSections>
    	<!--日志-->
    	<log4net>
    		<logger name="logerror">
    			<level value="ERROR" />
    			<appender-ref ref="ErrorAppender" />
    		</logger>
    		<logger name="loginfo">
    			<level value="INFO" />
    			<appender-ref ref="InfoAppender" />
    		</logger>
    		<!-- 错误日志配置 -->
    		<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
    			<!-- 保存文件的路径和文件名称 -->
    			<param name="File" value="LogsErrorerror.txt" />
    			<param name="AppendToFile" value="true" />
    			<!-- 日期格式 -->
    			<param name="DatePattern" value="yyyyMMdd"/>
    			<!-- 保存文件数量 -->
    			<param name="MaxSizeRollBackups" value="100" />
    			<!-- 每个文件的大小 -->
    			<param name="MaximumFileSize" value="1MB" />
    			<param name="RollingStyle" value="Size" />
    			<param name="StaticLogFileName" value="true" />
    			<!-- 日志输出格式 -->
    			<layout type="log4net.Layout.PatternLayout">
    				<param name="ConversionPattern" value="%-5p %d [%c] %m%n" />
    			</layout>
    		</appender>
    		<!-- 正常日志配置 -->
    		<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
    			<param name="File" value="LogsInfoinfo.txt" />
    			<param name="DatePattern" value="yyyyMMdd"/>
    			<param name="AppendToFile" value="true" />
    			<param name="MaxSizeRollBackups" value="100" />
    			<param name="MaximumFileSize" value="1MB" />
    			<param name="RollingStyle" value="Size" />
    			<param name="StaticLogFileName" value="true" />
    			<layout type="log4net.Layout.PatternLayout">
    				<param name="ConversionPattern" value="%-5p %d [%c] %m%n" />
    			</layout>
    		</appender>
    	</log4net>
    </configuration>
    

      上述配置中有对应的注释,可以根据个人需要更改。这里我们需要多说一嘴log4net的日志等级,从低至高分别是ALL、DEBUG、INFO、WARN、ERROR、FATAL、None。我们的配置中就配置了info(一般日志信息,可记录具体操作)和error(错误日志信息,可记录异常信息)。
    3、记录程序集信息
      找出项目AssemblyInfo.cs文件,在文件的末尾加上

    // 指定log4net 的配置文件
    [assembly: log4net.Config.XmlConfigurator(ConfigFile = @"log4net.config", Watch = true)]
    

    4、建立log4net帮助类

    /// <summary>
    /// 日志帮助类
    /// </summary>
    public class LogHelper
    {
        public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
        public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
    
        /// <summary>
        /// 普通的文件记录日志
        /// </summary>
        /// <param name="info"></param>
        public static void WriteLog(string info)
        {
            if (loginfo.IsInfoEnabled)
            {
                loginfo.Info(info);
            }
        }
        /// <summary>
        /// 错误日志
        /// </summary>
        /// <param name="info"></param>
        /// <param name="se"></param>
        public static void WriteLog(string info, Exception se)
        {
            if (logerror.IsErrorEnabled)
            {
                logerror.Error(info, se);
            }
        }
    }
    

    5、全局拦截异常信息并写进错误日志
      找到项目的WebApiConfig.cs文件,添加ExceptionFilterAttribute过滤器截取全局异常

    namespace SnailFis
    {
        public static class WebApiConfig
        {
            public static void Register(HttpConfiguration config)
            {
                // Web API 配置和服务
    
                //跨域配置
                config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
    
                // Web API 路由
                config.MapHttpAttributeRoutes();
    
                //设置webapi路由规则
                config.Routes.MapHttpRoute(
                    name: "DefaultApi",
                    routeTemplate: "snailFis_api/{controller}/{action}"
                );
    
                config.Filters.Add(new ApiExceptionResultAttribute());//添加过滤器
                //移除xml返回格式数据
                GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
            }
    
            /// <summary>
            /// API异常返回
            /// </summary>
            public class ApiExceptionResultAttribute : ExceptionFilterAttribute
            {
                public override void OnException(HttpActionExecutedContext actionExecutedContext)
                {
                    base.OnException(actionExecutedContext);//获取返回的http信息
                    LogHelper.WriteLog("WebApiConfig", actionExecutedContext.Exception);
                }
            }
        }
    }
    

      这时我们可以故意在代码中抛出一个异常,看看能不能截取到并写入进错误日志了。另外info日志,就需要根据个人需求添加了,这里就不再赘述了。

  • 相关阅读:
    HYSBZ 2818 gcd
    hdu1695 GCD
    HYSBZ 2301
    poj 2096
    正则表达式匹配HTML标签或标记
    [转载]Sed 命令详解 正则表达式元字符
    [转载]Shell删除各种注释的脚本
    [转载]sed实现直接修改文件内容
    [转载]强大的grep用法详解:grep与正则表达式
    [转载]【Shell脚本】逐行处理文本文件
  • 原文地址:https://www.cnblogs.com/liangshibo/p/13185420.html
Copyright © 2011-2022 走看看