Log4net用法

Log4net用法日记是我们在程序中经常用到的,故记于此首先要下载Log4net.dll官方网站:http://logging.apache.org/log4net/vs里创建一个c#控制台程序,在App.con

大家好,又见面了,我是你们的朋友全栈君。

日记是我们在程序中经常用到的,故记于此

首先要下载Log4net.dll

官方网站:http://logging.apache.org/log4net/

vs里创建一个c#控制台程序,在App.config里设置

<span role="heading" aria-level="2">Log4net用法

这里设置的目的,有两个,一为了得到log4net.config的文件,另一个就是日记的开关,日记是否开启

现在看主函数里怎么用

复制代码
using log4net.Config;
using log4net;

namespace Test {
    class Program {
       
        static void Main(string[] args) {

            //初始化日志文件 
            string state = ConfigurationManager.AppSettings["IsWriteLog"];
            //判断是否开启日志记录
            if (state == "1") {
                var path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase +
                           ConfigurationManager.AppSettings["log4net"];
                var fi = new System.IO.FileInfo(path);
                log4net.Config.XmlConfigurator.Configure(fi);
            }

            LogHelper.WriteLog("holle world");

           
        }

       
    }
}
复制代码
string state = ConfigurationManager.AppSettings["IsWriteLog"];这个是获取日记的开关

 var path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase +
                           ConfigurationManager.AppSettings["log4net"];
                var fi = new System.IO.FileInfo(path);
                log4net.Config.XmlConfigurator.Configure(fi);

 

上面fi就是log4net.config的文件位置,然后
 log4net.Config.XmlConfigurator.Configure(fi);


然后就是LogHelper类了,这个是个简单的日记帮助类
复制代码
    /// <summary>  
    /// LogHelper的摘要说明。   
    /// </summary>   
    public class LogHelper {
        /// <summary>
        /// 静态只读实体对象info信息
        /// </summary>
        public static readonly log4net.ILog Loginfo = log4net.LogManager.GetLogger("loginfo");
        /// <summary>
        ///  静态只读实体对象error信息
        /// </summary>
        public static readonly log4net.ILog Logerror = log4net.LogManager.GetLogger("logerror");

        /// <summary>
        ///  添加info信息
        /// </summary>
        /// <param name="info">自定义日志内容说明</param>
        public static void WriteLog(string info) {
            try {
                if (Loginfo.IsInfoEnabled) {
                    Loginfo.Info(info);
                }
            } catch { }
        }


        /// <summary>
        /// 添加异常信息
        /// </summary>
        /// <param name="info">自定义日志内容说明</param>
        /// <param name="ex">异常信息</param>
        public static void WriteLog(string info, Exception ex) {
            try {
                if (Logerror.IsErrorEnabled) {
                    Logerror.Error(info, ex);
                }
            } catch { }
        }
    }
复制代码

最后是log4net.config设置文件

复制代码
<?xml version="1.0" encoding="utf-8" ?>
<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="Data//WebLog//LogError//" />
      <!--是否追加到文件-->
      <param name="AppendToFile" value="true" />
      <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
      <param name="MaxSizeRollBackups" value="100" />
      <param name="MaxFileSize" value="1024" />
      <!--是否只写到一个文件中-->
      <param name="StaticLogFileName" value="false" />
      <!--这是按日期产生文件夹,并在文件名前也加上日期-->
      <param name="DatePattern" value="yyyyMM/dd&quot;.log&quot;" />
      <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异常位置:[%thread] (%file:%line) %n消息描述:%message%n异常:%exception%n%n " />
      </layout>
    </appender>
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
      <!--设置日志存储路径-->
      <param name="File" value="Data//WebLog//LogInfo//" />
      <!--是否追加到文件-->
      <param name="AppendToFile" value="true" />
      <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
      <param name="MaxSizeRollBackups" value="100" />
      <param name="MaxFileSize" value="1024" />
      <!--是否只写到一个文件中-->
      <param name="StaticLogFileName" value="false" />
      <!--这是按日期产生文件夹,并在文件名前也加上日期-->
      <param name="DatePattern" value="yyyyMM/dd&quot;.log&quot;" />
      <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n消息描述:%c [%x] %n%m %n " />
      </layout>
    </appender>
  </log4net>
</configuration>
复制代码

然后就可以了,日记就在bin\Debug\Data\WebLog\LogInfo下

<span role="heading" aria-level="2">Log4net用法

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/155257.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 网络分析最佳路径_局域网找不到网络路径

    网络分析最佳路径_局域网找不到网络路径网络分析——路径分析一、实验背景在远距离送货,物资派发、急救服务和邮递等服务中,经常需要在一次行程中同时访问多个站点(收货方、邮件主人、物资储备站等),如何寻找到一个最短和最经济的路径,保证访问到所有站点,同时最快最省地完成一次行程,这是很多机构遇到的问题。为解决这类问题,我们需要学习基于ArcGIS网络分析功解决实际路径问题,掌握网络分析基本技能。二、实验内容根据不同的要求,获得到达指…

  • php实现工厂模式

    php实现工厂模式

    2021年11月15日
  • 简述handler机制及其作用_传统金融的优势与缺点

    简述handler机制及其作用_传统金融的优势与缺点From:http://www.mysqlops.com/2011/10/20/handlersocket-adv.htmlHandlerSocket的优势和特点:1)        支持多种查询模式HandlerSocket目前支持索引查询(主键索引和非主键的普通索引均可),索引范围扫描,LIMIT子句,也即支持增加、删除、修改、查询完整功能,但还不支持无法使用任何索引

  • 功能强大的radcontrols for Asp.net

    功能强大的radcontrols for Asp.netradcontrols类似vs套装的控件,只不过功能比其更加强大,灵活,开发也更快捷。radcontrols官方网址:http://www.telerik.com/分windows和asp.n

  • odrive入门教程(securecrt使用教程串口)

    ODrive官方入门指南中,采用的是USB连接控制模式(中文翻译版本链接)使用的是NativeProtocol。当我们需要尝试串口通信实现时,需要专程ASCII协议来进行串口通信实现相关的命令,结合着入门指南以及ODrive中的相关属性方法参数,将流程中用到的相关方法整理如下:importserialimporttimeted=serial.Serial(port=’/dev/tty.wchusbserial1470′,baudrate=115200)ted.writ

  • plugins webpack_webpack plugin原理

    plugins webpack_webpack plugin原理plugin插件是webpack的支柱功能。webpack自身也是构建于你在webpack配置中用到的相同的插件系统之上!插件目的在于解决loader无法实现的其他事。常用的插件

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号