您的位置:首页 > 编程语言 > C#

C# winform使用log4net步骤

2016-07-19 19:07 344 查看
1.使用工程中引入log4net的dll

2.主工程的app.config中增加log4net配置

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="AdjustMeter.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<system.diagnostics>
<sources>
<!-- 本部分定义 My.Application.Log 的登录配置-->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
<!-- 取消以下部分的注释,以写入应用程序事件日志-->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
initializeData="FileLogWriter"/>
<!-- 取消以下部分的注释,并用应用程序名替换 APPLICATION_NAME,以写入应用程序事件日志-->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
<applicationSettings>
<AdjustMeter.My.MySettings>
<setting name="HL_Meter_WebReference_Service" serializeAs="String">
<value>http://172.16.23.63/webjmj/Service.asmx</value>
</setting>
</AdjustMeter.My.MySettings>
</applicationSettings>
<log4net>
<root>
<!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
<!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->
<!--如果没有定义LEVEL的值,则缺省为DEBUG-->
<level value="ALL" />
<appender-ref ref="InfoAppender" />
<appender-ref ref="DebugAppender" />
<appender-ref ref="ErrorAppender" />
</root>
<!--定义输出到文件中-->
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<!--定义文件存放位置-->
<file value="TermLog\\Info\\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<param name="MaxSizeRollBackups" value="100"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%t]%-5p %c - %m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="INFO" />
</filter>
</appender>
<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
<!--定义文件存放位置-->
<file value="TermLog\\Frames\\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<param name="MaxSizeRollBackups" value="100"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%t]Frames %c - %m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="DEBUG" />
</filter>
</appender>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<!--定义文件存放位置-->
<file value="TermLog\\Error\\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<param name="MaxSizeRollBackups" value="100"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%t]%-5p %c - %n%m%n%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
</log4net>
</configuration>


具体哪个文件属于哪个级别,通过appener中的filter过滤

3.代码中使用

using System;
using System.Collections.Generic;
using System.Text;

[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace TermComm
{
public class LogHelper
{
public enum LogType
{
//Debug=0,
Error=1,
//Fatal=2,
Info=3,
//Warn=4
}

public static void WriteErrorLog(Exception ex, Type t)
{
WriteLog(LogHelper.LogType.Error, t, "StackTrace:" + System.Environment.NewLine + ex.StackTrace +
System.Environment.NewLine +
"TargetSite:" + ex.TargetSite +
System.Environment.NewLine +
"Message:" + ex.Message);
}

/// <summary>
/// 输出日志
/// </summary>
/// <param name="logType"></param>
/// <param name="t"></param>
/// <param name="msg"></param>
public static void WriteLog(LogType logType, Type t, string msg)
{
log4net.ILog log = log4net.LogManager.GetLogger(t);

switch (logType)
{
case LogType.Error:
if (CommPara.OutputErr)
{
log.Error(msg);
}
break;
case LogType.Info:
if (CommPara.OutputInfo)
{
log.Info(msg);
}
break;
default:
break;
}
}

/// <summary>
/// 记录帧
/// </summary>
/// <param name="t"></param>
/// <param name="frames"></param>
public static void WriteFrame(Type t, byte[] frames)
{
if (!CommPara.OutputFrame) return;

if (frames != null && frames.Length > 0)
{
log4net.ILog log = log4net.LogManager.GetLogger(t);

string strFrames = string.Empty;
for (int i = 0; i < frames.Length; i++)
{
strFrames += frames[i].ToString("X2") + " ";
}

log.Debug(strFrames);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: