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)
上一篇 2022年7月2日 下午2:36
下一篇 2022年7月2日 下午2:36


相关推荐

  • Pycharm代码docker容器运行调试 | 机器学习系列

    Pycharm代码docker容器运行调试 | 机器学习系列介绍常规的本地化运行机器学习代码,安装Anaconda+cuda显卡驱动支持,许多文章都有介绍,不在此多做赘述了。本文主要是为了解决在工作环境中,本机电脑没有显卡,需要将程序运行在带显卡的远程服务器上。本文会介绍如何部署使用显卡的docker容器、如何使用pycharm连接docker容器运行机器学习代码。版本Pycharm:2020.1.3docker:19.03.12python:3.6.13demo算法:BackgroundMattingV2部署下面我会按照.

    2022年8月28日
    7
  • c++ 11 bind_箭头函数可以用bind吗

    c++ 11 bind_箭头函数可以用bind吗bind函数的使用详解可以将bind函数看作是一个通用的函数适配器,它接受一个可调用对象,生成一个新的可调用对象来“适应”原对象的参数列表。调用bind的一般形式:autonewCallable=bind(callable,arg_list);`其中,newCallable本身是一个可调用对象,arg_list是一个逗号分隔的参数列表,对应给定的callable的参数。即,当我们调用n……

    2025年7月8日
    6
  • 机器学习十大算法!入门看这个就够了~

    机器学习十大算法!入门看这个就够了~基本的机器学习算法 线性回归算法 LinearRegres 支持向量机算法 SupportVecto SVM 最近邻居 k 近邻算法 K NearestNeigh KNN 逻辑回归算法 LogisticRegr 决策树算法 DecisionTree k 平均算法 K Means 随机森林算法 RandomForest 朴素贝叶斯算法 NaiveBayes 降维算法 DimensionalR 梯度增强算

    2026年3月16日
    2
  • intellij idea 配置svn及提交项目「建议收藏」

    intellij idea 配置svn及提交项目「建议收藏」一、intellijidea安装svn前提条件:你的电脑安装了小乌龟,也就是svn。1、配置svn如下图箭头所示,在安装TortoiseSVN的时候,默认commandlineclienttools,表示使用IDEa自带的svn。然后,选中你的svn安装的路径2、配置svn地址添加svn地址路径二、intellijidea提交项目1、…

    2022年5月14日
    193
  • import java.io 是什么意思_Java IO 详解

    import java.io 是什么意思_Java IO 详解JavaIO详解初学java,一直搞不懂java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂。而且没有结合到java7的最新技术,所以自己来整理一下,有错的话请指正,也希望大家提出宝贵意见。首先看个图:(如果你也是初学者,我相信你看了真个人都不好了,想想java设计者真是煞费苦心啊!)这是javaio比较基本的一些处理流,除此之外我们还会提到一些比较深入的基于i…

    2022年6月7日
    33
  • 华三路由交换配置命令_h3c路由器配置命令都有哪些 h3c路由器配置命令大全【详解】…[通俗易懂]

    华三路由交换配置命令_h3c路由器配置命令都有哪些 h3c路由器配置命令大全【详解】…[通俗易懂]对于一般的家庭路由器而言,我们是不需要对他进行配置的。因为家庭路由器这一种小型路由器一般都已经了确定的指令去执行。但是对于一些大型路由器而言,配置命令是非常重要的。正是因为有了配置命令的存在,才能够使大型路由器实行大规模的命令执行。那么接下来,小编就来给大家以H3C路由器为例子,讲讲大型路由器的一些常用基本配置命令吧。快捷键Ctrl+A,将光标移动到当前行的开头Ctrl+B,将光标向左移动一个…

    2022年10月17日
    5

发表回复

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

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