nlog 中小型日志组件 解决了应用程序的日志问题
来源:互联网 发布:云计算招聘岗位 编辑:程序博客网 时间:2024/06/14 23:36
曾经一项目需要进行程序的日志记录(我是做.net 开发的),看了一些方法,如果是自己来写,形成一定结构,开发量又大,便想用已经第三方控件了,发现了log4net 很强大,但是配置复杂,并且很多功能也是浪费,但想小一点的,找到了nlog 控件,这很好,结构清楚,而功能正好所用,可以满足.net 大部分程序的 log 问题
下面来看看比较合适的用法,
1、项目中引用 nlog.dll
2、把他的配置文件 nlog.dll.nlog 引入了 到项目中了,(注意)如果是放在源代码目录,则要选复制到输出目录了,如果是只接放在输出目录就不用了
3、编辑日志文件了,
nlog.dll.nlog 其实是一个xml 例子如下
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<targets>
<target name="console" xsi:type="ColoredConsole"
layout="${date:format=HH/:mm/:ss}|${level}|${stacktrace}|${message}"/>
<target name="info" xsi:type="File" fileName="${basedir}/logs/info.log"
layout="[${date:format=yyyy-MM-dd HH/:mm/:ss}][${level}] ${message} ${exception}"/>
<target name="exception" xsi:type="File" fileName="${basedir}/logs/exception.log"
layout="[${date:format=yyyy-MM-dd HH/:mm/:ss}][${level}] ${message} ${exception}"/>
</targets>
<rules>
<logger name="*" level="Error" writeTo="exception"></logger>
<logger name="*" level="Info" writeTo="info"></logger>
</rules>
</nlog>
他这个分成 rule 和target
rule 就是说日志是那一级的,他也有两种,有上面这样的指定每一级 level 还有一种是指定 minlevel 也就是日志级别大于这一级就用这个的target ,也是就后面 writeto 指定的就是target 的位置
target 就是输入日志的实例了, filename 就是指定当前输出日志的全路径,"${basedir}/logs/info.log" 像这样就是写到程序目录下logs 文件夹下的info.log 中了,
4、调用 可以申明一个static 方法,直接调用就行了,
public static Logger m_log=LogManager.GetCurrentClassLogger();
m_log.Debug("i am in debug",new Exception ("debug"));
这样就行了,logger 有很多种的 debug、 error、 warming、 info 这像等等,
后来发现像得到如果你发的exception 不能得到是那一行代码发生错误,只记录得很简单,所以用了 extension method(.net 3.0以上才能用) 封装一个logutil 类,只接调用就好,更能记录下那句代码调试时出现异常,有要做这个的朋友可以看下,代码也简单,
代码如下了,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NLog;
namespace PUG.Common.Util
{
public class LogUtil
{
public static Logger m_log=LogManager.GetCurrentClassLogger();
//Info log
public static void Info(string info)
{
LogUtil.m_log.Info(info);
}
public static void InfoException(Exception ex)
{
LogUtil.m_log.InfoException(ex);
}
//Debug log
public static void Degug(string debug)
{
LogUtil.m_log.Debug(debug);
}
public static void DebugException(Exception ex)
{
LogUtil.m_log.DebugException(ex);
}
//Error log
public static void Error(string error)
{
LogUtil.m_log.Error(error);
}
public static void ErrorException(Exception ex)
{
LogUtil.m_log.Error(ex);
}
//Fatal log
public static void Fatal(string fatal)
{
LogUtil.m_log.Fatal(fatal);
}
public static void FatalException(Exception ex)
{
LogUtil.m_log.FatalException(ex);
}
////Log log
//public static void Log(string log)
//{
// LogUtil.m_log.Log(log);
//}
//public static void LogException(Exception ex)
//{
// LogUtil.m_log.LogException(ex);
//}
//Warn Log
public static void Warn(string warn)
{
LogUtil.m_log.Warn(warn);
}
public static void WarnException(Exception ex)
{
LogUtil.m_log.WarnException(ex);
}
}
/// <summary>
/// extension nlog.dll
/// </summary>
public static class NLogExtension
{
//info extension
public static void InfoException(this Logger log, Exception ex)
{
log.InfoException(ex.StackTrace, ex);
}
//debug extension
public static void DebugException(this Logger log, Exception ex)
{
log.DebugException(ex.StackTrace,ex);
}
//error extension
public static void ErrorException(this Logger log,Exception ex)
{
log.ErrorException(ex.StackTrace,ex);
}
//fatal extension
public static void FatalException(this Logger log,Exception ex)
{
log.FatalException(ex.StackTrace ,ex);
}
////log extension
//public static void LogException(this Logger log, Exception ex)
//{
// log.LogException(ex.StackTrace,ex);
//}
//warn extension
public static void WarnException(this Logger log, Exception ex)
{
log.WarnException(ex.StackTrace,ex);
}
}
}
- nlog 中小型日志组件 解决了应用程序的日志问题
- 日志Nlog
- NLog日志
- 日志记录组件log4net和nlog
- 好用的日志记录工具,NLog
- IIS网站下挂载应用程序, NLOG写日志出问题
- NLog日志使用方法
- NLog日志使用方法
- nlog日志配置
- NLog日志记录学习
- .Netcore之日志组件Log4net、Nlog性能比较
- .Netcore之日志组件Log4net、Nlog性能比较
- 【日志类】解决了okHttp的使用问题
- NLog日志管理工具--入门实例
- NLog日志管理工具--发送邮件
- NLog日志管理工具--入门实例
- 日志框架Nlog之前言
- NLog日志管理工具--入门实例
- 汇编笔记
- js 实现无缝滚动 兼容IE FF
- 学习rownum
- OpenGL累积缓存的操作函数详细说明
- 网络蜘蛛程序的设计与实现(五)HillTop算法
- nlog 中小型日志组件 解决了应用程序的日志问题
- 北京在绿色城市道路上的一个里程碑
- 相互理解
- Oracle: 通过命令行登陆连接并操作数据库
- Linux 2.6.22.6移植到S3C2440之通过nfs启动qt并添加USB鼠标支持
- CLR via C#: GetHashCode与Hashtable,Dictionary
- Spring - Java/J2EE Application Framework——Spring Framework 开发参考手册
- 编译C++ ----DLL
- 如何增加ORACLE连接数