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用法

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android源码中编译自己的so库

    Android源码中编译自己的so库1,首先看看这边文章:http://www.linuxidc.com/Linux/2013-02/79007.htm2,Android使用C/C++调用SO库 有时候,我们反编译apk得到一个so库,如果直接使用这个so库的话,必须使用原来so库同样的package名字,才能用。这样人家反编译你的apk,就知道你侵犯了人家的版权。为了达到混淆的目的,我们可以再写一个so库

    2022年6月17日
    24
  • dropdownlist赋值_paypal可以绑定什么卡

    dropdownlist赋值_paypal可以绑定什么卡很多的时候需要把枚举作为数据源绑定DropDownList,一直简单的做法是: 1    /**////  2    /// 排序方向下拉列表,从DropDownList继承 3    ///  4    public class SortOrderDropDownList : DropDownList 5    { 6        public SortOrderDropDownList(

    2022年10月8日
    4
  • Windows之IOCP

    1.简介IOCP模型属于一种通讯模型,适用于Windows平台下高负载服务器的一个技术。在处理大量用户并发请求时,如果采用一个用户一个线程的方式那将造成CPU在这成千上万的线程间进行切换,后果是不

    2021年12月28日
    40
  • Baidu与Google地图API初探

    Baidu与Google地图API初探

    2021年12月1日
    44
  • hashmap线程安全吗 什么解决方案_HashMap的底层实现原理

    hashmap线程安全吗 什么解决方案_HashMap的底层实现原理我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,应该使用ConcurrentHashMap,但是其线程不安全体现在什么地方,可能并没有深入理解,本文将对该问题进行解密。

    2025年7月1日
    4
  • NetCMS修改之二:单击新闻附件,直接打开文件「建议收藏」

    NetCMS修改之二:单击新闻附件,直接打开文件「建议收藏」   NetCMS系统的新闻附件,是通过down.aspx页面实现下载附件的。这样做的好处可能是可以隐藏附件的真实地址,但给用户使用会带来一个小麻烦:无法使用右键单击来实现将下载的文件另存为。   经检查,此功能是在NetCMS.Publish命名空间的LabelMass类中定义的getNewsFiles实现的,文件位于NetCMS.Publish/Label/NewsParameter.

    2022年9月29日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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