3.6、GG_Logs 日志类库封装使用说明

GG_Logs类库项目,Nuget安装log4net

添加代码配置代码:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = false)]

添加操作类代码(Log4Net.cs):

using System;

using System.Collections.Generic;

using System.Diagnostics;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using log4net;

namespace GG_Logs

{

public static class Log4Net

{

public static void Debug(object message)

{

LogManager.GetLogger(GetCurrentMethodFullName()).Debug(message);

}

public static void Debug(object message, Exception ex)

{

LogManager.GetLogger(GetCurrentMethodFullName()).Debug(message, ex);

}

public static void Error(object message)

{

LogManager.GetLogger(GetCurrentMethodFullName()).Error(message);

}

public static void Error(object message, Exception exception)

{

LogManager.GetLogger(GetCurrentMethodFullName()).Error(message, exception);

}

private static string GetCurrentMethodFullName()

{

try

{

StackFrame frame;

string str2;

int num = 2;

StackTrace trace = new StackTrace();

int length = trace.GetFrames().Length;

do

{

frame = trace.GetFrame(num++);

str2 = frame.GetMethod().DeclaringType.ToString();

}

while (str2.EndsWith("Exception") && (num < length));

string name = frame.GetMethod().Name;

return (str2 + "." + name);

}

catch

{

return null;

}

}

public static void Info(object message)

{

LogManager.GetLogger(GetCurrentMethodFullName()).Info(message);

}

public static void Info(object message, Exception ex)

{

LogManager.GetLogger(GetCurrentMethodFullName()).Info(message, ex);

}

public static void Warn(object message)

{

LogManager.GetLogger(GetCurrentMethodFullName()).Warn(message);

}

public static void Warn(object message, Exception ex)

{

LogManager.GetLogger(GetCurrentMethodFullName()).Warn(message, ex);

}

}

}

在使用的项目中引用类的GG_Logs.dll,新建文件log4net.config 并添加配置代码:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<configSections>

<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>

</configSections>

<log4net>

<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->

<!-- Set root logger level to ERROR and its appenders -->

<root>

<level value="ALL" />

<appender-ref ref="SysAppender" />

</root>

<!-- Print only messages of level DEBUG or above in the packages -->

<logger name="WebLogger">

<level value="DEBUG" />

</logger>

<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">

<!--文件名称-->

<appendToFile value="true"/>

<param name="File" value="C:/Logs/" />

<param name="AppendToFile" value="true" />

<param name="RollingStyle" value="Date" />

<!--文件名称-->

<param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />

<param name="StaticLogFileName" value="false" />

<!--设置无限备份=-1 ,最大备份数为1000-->

<param name="MaxSizeRollBackups" value="1000"/>

<!--每个文件的大小-->

<param name="MaximumFileSize" value="500KB"/>

<layout type="log4net.Layout.PatternLayout,log4net">

<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />

</layout>

</appender>

<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">

<layout type="log4net.Layout.PatternLayout,log4net">

<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />

</layout>

</appender>

</log4net>

</configuration>

调用代码很简单。

using GG_Logs;

Log4Net.Error("hhhhhhhhhhhhh");

实际项目调用,建立mvc模式的web项目,项目名称Web。

当前mvc项目想创建一个log4net.config 日志配置文件:代码如下

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<configSections>

<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>

</configSections>

<log4net>

<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->

<!-- Set root logger level to ERROR and its appenders -->

<root>

<level value="ALL" />

<appender-ref ref="SysAppender" />

</root>

<!-- Print only messages of level DEBUG or above in the packages -->

<logger name="WebLogger">

<level value="DEBUG" />

</logger>

<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">

<!--文件名称-->

<appendToFile value="true"/>

<param name="File" value="D:/Logs/" />

<param name="AppendToFile" value="true" />

<param name="RollingStyle" value="Date" />

<!--文件名称-->

<param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />

<param name="StaticLogFileName" value="false" />

<!--设置无限备份=-1 ,最大备份数为1000-->

<param name="MaxSizeRollBackups" value="1000"/>

<!--每个文件的大小-->

<param name="MaximumFileSize" value="500KB"/>

<layout type="log4net.Layout.PatternLayout,log4net">

<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />

</layout>

</appender>

<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">

<layout type="log4net.Layout.PatternLayout,log4net">

<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />

</layout>

</appender>

</log4net>

</configuration>

当前项目添加引用

打开HomeController.cs 控制器 ,添加代码

using GG_Logs;  //命名空间引用

Index()方法加入代码Log4Net.Error("hhhhhhhhhhhhh");

运行项目,在D盘logs文件夹下有txt文本,日志操作完成。

需要的可加qq群:547765059  ,源码在空间里。

GG_Logs 日志类库封装使用说明的更多相关文章

  1. quartz.net插件类库封装(含源码)

    1.前言 目录: 1.quartz.net任务调度:源码及使用文档 2.quartz.net插件类库封装 最近项目需要做一写任务作业调度的工作,最终选择了quartz.net这个插件,它提供了巨大的灵 ...

  2. 【转】第7篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:全自动注册与反射方法分析

    作者: 牛A与牛C之间 时间: 2013-12-12 分类: 技术文章 | 2条评论 | 编辑文章 主页 » 技术文章 » 第7篇:Xilium CefGlue 关于 CLR Object 与 JS ...

  3. 【转】第6篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+自动反射方法分析

    作者: 牛A与牛C之间 时间: 2013-11-21 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第6篇:Xilium CefGlue 关于 CLR Object 与 JS ...

  4. 【转】第5篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+委托回调方法分析

    作者: 牛A与牛C之间 时间: 2013-11-19 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第5篇:Xilium CefGlue 关于 CLR Object 与 JS ...

  5. 【转】第4篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:委托回调方法分析

    作者: 牛A与牛C之间 时间: 2013-11-18 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第4篇:Xilium CefGlue 关于 CLR Object 与 JS ...

  6. 【转】3篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:官方原生方法分析

    作者: 牛A与牛C之间 时间: 2013-11-17 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第3篇:Xilium CefGlue 关于 CLR Object 与 JS ...

  7. 通过编写一个简单的日志类库来加深了解C#的文件访问控制

    在程序的开发调试过程及发布运行后的状态监控中,日志都有着极其重要的分量,通过在关键逻辑节点将关键数据记录到日志文件当中能帮助我们尽快找到程序问题所在.网上有不少专业成熟的日志组件可用,比如log4ne ...

  8. 日志log4cxx 封装、实例讲解、配置文件log4cxx.properties

    日志log4cxx 封装.实例讲解.配置文件log4cxx.properties 1. 日志作用 程序运行过程中,需要记录程序中的运行状况,方便排查问题,记录数据.可以根据日志的记录快速定位错误发生的 ...

  9. 结构化日志类库 ---- Serilog库

    在过去的几年中,结构化日志已经大受欢迎.而Serilog是 .NET 中最著名的结构化日志类库 ,我们提供了这份的精简指南来帮助你快速了解并运用它. 0. 内容 设定目标 认识Serilog 事件和级 ...

随机推荐

  1. tyvj1045 最大的算式

    描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号.例 ...

  2. Gym 100801 J. Journey to the “The World’s Start” DP+单调队列优化+二分

    http://codeforces.com/gym/100801 题目大意:有从左到右有n个车站,有n-1种车票,第i种车票一次最多可以坐 i 站(1<=i<=n)   每种票有固定的价钱 ...

  3. csu - 1537: Miscalculation (模拟题)

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1537 因为给出的式子是必定合法的,只要用两个栈分别保存符号和数字.算出答案后和从左至右算的答案比对 ...

  4. Ubuntu 16.04安装JMeter测试工具

    JMeter是Java的测试工具,由Apache开发. 同样,JMeter是跨平台的. 下载: http://jmeter.apache.org/download_jmeter.cgi 安装: 7z ...

  5. linux内核CFS进程调度策略

    一.概述 首先简介一下主要的设计思路, CFS思路非常easy.就是依据各个进程的权重分配执行时间(权重怎么来的后面再说). 进程的执行时间计算公式为: 分配给进程的执行时间 = 调度周期 * 进程权 ...

  6. 域名添加HTTPS

    准备 需要python版本为2.7以上,所以centos6需要把2.6升级成2.7 升级python ###安装python2.7 tar -xvf Python-2.7.5tar.bz2 cd Py ...

  7. socket 由浅入深系列------ 原理(一)

    来自:网络整理 个人觉得写一个网络应用程序没有是一件非常easy的事.其实,我们刚開始的时候总觉得的原则: 建立------>连接套接字------->接受一个连接---->发送数据 ...

  8. leetcode02-Add Two Numbers之beats98.68%Java版本号

    我的leetcode之旅,该篇章主要完毕使用Java实现算法. 这是第二篇Add Two Numbers 所有代码下载: Github链接:github链接,点击惊喜; 写文章不易.欢迎大家採我的文章 ...

  9. JspSmartUpload 实现上传

    2.save  作用:将所有上传文件保存到指定文件夹下,并返回保存的文件个数. 原型:public int save(String destPathName)  和public int save(St ...

  10. 【bzoj1452】[JSOI2009]Count

    二维树状数组 #include<iostream> #include<cstdio> #include<cstring> using namespace std; ...