现在项目涉及的是cs客户端,在项目中使用log4net记录本地日志和异常信息,这里项目做完了,想着自己做一个demo,测试记录一下log4Net的配置使用。

第一步、新建一个wpf应用程序,项目右键 -----》点击NuGet程序包 -----》搜索lognet -------》点击安装

第二步:在app.config中添加节点  (当然,如果是Web项目就是 web.config)

配置文件代码如下:

<configuration>
<configSections>
<!--log4net配置-->
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<!--log4net配置-->
<log4net>
<!--定义输出到文件中-->
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--定义文件存放位置-->
<!--file可以指定具体的路径 D://logfile.txt。-->
<file value="D://logfile.txt"/>
<!--如果放在Debug下,当然名字你可以改 -->
<!--<file value="log//logfile.txt"/>-->
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<!--备份log文件的个数最多10个-->
<maxSizeRollBackups value="" />
<!--每个log文件最大是2M,如果超过2M将重新创建一个新的log文件,并将原来的log文件备份。-->
<maximumFileSize value="2MB" />
<datePattern value="yyyyMMdd-HH:mm:ss"/>
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<!--样例:-- ::, [] INFO Log4NetDemo.MainClass [(null)] - info-->
<conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline"/>
</layout>
</appender>
<!--定义日志的输出媒介-->
<root>
<!--指定将此级别及以上的log打印到log文件中-->
<level value="DEBUG"/>
<!--文件形式记录日志-->
<appender-ref ref="LogFileAppender"/>
</root>
</log4net>
</configuration>

把配置加到app.config中,如图所示

第三步:

 在项目中找到Properties文件夹中找到AssemblyInfo.cs 在代码追后 添加 [assembly: log4net.Config.XmlConfigurator(Watch = true)]

第四步:添加操作log4net的后台代码

xaml文件创建按钮

<Button Name="logBtn" Click="LogBtn_Click" Content="创建日志" Width="" Height=""></Button>

xaml.cs 添加执行操作代码

private void LogBtn_Click(object sender, RoutedEventArgs e)
{
string strLog = String.Format("[Thread ID:{0}]{1}", AppDomain.GetCurrentThreadId(), "Log4net写入日志配置处理");
WriteLog(strLog);
} private void WriteLog(string exp = null, string loggerName = "InfoLogger")
{
//新建的一个静态类
LogObject.Log(loggerName).Info(exp);
LogObject.Log(loggerName).Error(exp);
}
public static class LogObject
{ public static ILog Log(string LoggerName)
{
//log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
  return LogManager.GetLogger(LoggerName); } }

第五步:

找到文件路径D://logfile.txt 查看日志!

静态类中获取日志对象的另一种写法:这个是程序自动获取当前程序对象     (上面的我是通过WriteLog方法传入的)

ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
return log;

日志输出:

如果要在程序刚运行和退出的时候写入日志,在App.xaml.cs中加入:

public static readonly ILog Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
Log.Info("==Startup=====================>>>");
}
protected override void OnExit(ExitEventArgs e)
{
Log.Info("<<<========================End==");
base.OnExit(e);
}

先再运行编译后的exe文件

然后退出程序,看结果

我们可以看到程序在进入和退出的时候也写入了日志。

扩展的知识点

日志记录器(Logger)的级别顺序: 
    分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级 从高到低分别是 ERROR、WARN、INFO、DEBUG。 
    通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别, 则应用程序中所有DEBUG级别的日志信息将不被打印出来。(比定义低的级别不会被打印出来)

    优先级高的将被打印出来。项目上生产环境时候建议把debug的日志级别重新调为warn或者更高,避免产生大量日志。

wpf Log4net的配置和使用的更多相关文章

  1. LOG4NET日志配置及使用

    Log4net的安装 Install-Package log4net 1.先弄个日志记录的类 /// <summary> /// 使用LOG4NET记录日志的功能,在WEB.CONFIG里 ...

  2. log4net的配置与使用

    log4net解决的问题是在.Net下提供一个记录日志的框架,它提供了向多种目标写入的实现,比如利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括MS SQ ...

  3. 将Log4net的配置配置到的独立文件中

    本文转载:http://blog.csdn.net/wanzhuan2010/article/details/7587780 另外一篇博客:http://grim1980.blog.sohu.com/ ...

  4. Log4Net 日志配置[附带源码]

    前述 园子里有许多人对log4net这款开源的日志记录控件有很多介绍.在这里个人再做一次总结,希望对以后有所帮助,需要的时候可以直接使用,减少查阅资料的时间.利用log4net可以方便地将日志信息记录 ...

  5. Log4Net详细配置

    关于Log4Net配置主要分几步 第一步:下载log4net.dll(log4net官网:http://logging.apache.org/log4net/download_log4net.cgi) ...

  6. 日志管理-将Log4net的配置配置到的独立文件中

    转自:http://www.cnblogs.com/zfanlong1314/p/3662679.html使用log4net已经很久了.但从来没有详情了解log4的参数,及具体使用方法.看了周公的博客 ...

  7. Log4net快速配置使用指南。(快速搭建log4net日志平台手册)

    每做一个新项目,都会用到log4net,但总是忘记如何快速配置.有时在网上搜半天也找不到好的模板,大都在介绍参数的使用,在此做下总结,争取下次用时仅10分钟就可搭建好log4net. 直接上介绍的步骤 ...

  8. C# log4net 的配置

    项目的日志组件是必备可少的,任何项目中都需要.这样既方便前期的开发测试也方便项目后期的项目维护.C#项目的一个不错的日志组件是log4net,下面我就把桌面应用程序.控制台程序.网站中log4net的 ...

  9. log4net 日志配置及使用

    一.log4net按照不同的[LEVEL]级别输出到不同文件 <log4net> <!--错误日志:::记录错误日志--> <!--按日期分割日志文件 一天一个--> ...

随机推荐

  1. mysql adddate()函数

    mysql> ); +---------------------------+ | adddate() | +---------------------------+ | -- | +----- ...

  2. 将对象转化为数组,并且适用select下拉

    当你做element-ui的select下拉的时候数据是从后台请求,但是怎么才能将obj转成数组呢.并且后台返回的key和value中的key是要传的参数 var obj = { name: 'gab ...

  3. 14、Docker监控方案(Prometheus+cAdvisor+Grafana)

    上一篇文章我们已经学习了比较流行的cAdvisor+InfluxDB+Grafana组合进行Docker监控.这节课来学习Prometheus+cAdvisor+Grafana组合. cAdvisor ...

  4. 公网IP地址就一定是A类地址和B类地址吗?那C类地址就一定是私有地址吗?

    A,B,C三类中既有公网地址,也有私网地址:在A类地址中,10.0.0.0-10.255.255.255是私有地址.在B类地址中,172.16.0.0-172.31.255.255是私有地址.在C类地 ...

  5. python3新特性函数注释Function Annotations用法分析

    本文分析了python3新特性函数注释Function Annotations用法.分享给大家供大家参考,具体如下: Python 3.X新增加了一个特性(Feature),叫作函数注释 Functi ...

  6. 微信小程序开发——微信小程序下拉刷新真机无法弹回

    开发工具中下拉之后页面回弹有一定的延迟,这个时间也有点久.真机测试,下拉后连回弹都没有,这个问题要解决,就得在下拉函数里加上停止下拉刷新的API,如下: /** * 下拉刷新 */ onPullDow ...

  7. 使用协方差矩阵的特征向量PCA来处理数据降维

    取2维特征,方便图形展示 import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.data ...

  8. oracle 应用程序调用存储函数

    package com.founder.ec.common.lucene; import java.sql.CallableStatement; import java.sql.Connection; ...

  9. Ubuntu新建用户并指定目录

    例如我要新建一个nginx用户,并指定目录,允许使用bash登录 sudo useradd -d "/home/nginx" -m -s "/bin/bash" ...

  10. LODOP打印维护适应不同的客户端

    之前的博文:Lodop打印设计.维护.预览.直接打印简单介绍,介绍了打印设计.打印维护.打印预览,直接打印等的区别和使用. 如上面以前博文描述的,打印维护是针对客户端进行调整的,开放打印维护给客户端, ...