Log4Net 使用说明
类库结构:


public enum ELogLevel { /// <summary> /// 一般信息 /// </summary> Info=1, /// <summary> /// 调试信息 /// </summary> Debug=2, /// <summary> /// 跟踪信息 /// </summary> Trace=3, /// <summary> /// 错误信息 /// </summary> Error=4, /// <summary> /// 严重错误 /// </summary> Fatal=5 }
public class FileLogger : ILogger { private ELogLevel _configLogLevel; private static ILog _log = null; public FileLogger() { Enum.TryParse(GetAppSettingValue("LogLevel"), out _configLogLevel); string logName = GetAppSettingValue("LogName"); #if DEBUG string configPath = @"E:\willDeleteProject\ZLJ.WorkSpace\ZLJ.Log4net\log4net.config"; #else string configPath = Path.Combine(HttpRuntime.BinDirectory, "log4net.config"); #endif XmlConfigurator.ConfigureAndWatch(new FileInfo(configPath)); _log = LogManager.GetLogger("logName"); } /// <summary> /// 写入日志 /// </summary> /// <param name="msg">日志内容</param> /// <param name="logLevel">日志级别</param> public void WriteLog(string msg, ELogLevel logLevel = ELogLevel.Info) { if (string.IsNullOrWhiteSpace(msg) || Enable) return; bool aa = _log.IsDebugEnabled; //传入日志级别大于配置文件中的日志级别 if (logLevel>=_configLogLevel) { switch (logLevel) { case ELogLevel.Info: _log.Info(msg); break; case ELogLevel.Debug: _log.Debug(msg); break; case ELogLevel.Trace: _log.Warn(msg); break; case ELogLevel.Error: _log.Error(msg); break; case ELogLevel.Fatal: _log.Fatal(msg); break; } } } public void Dispose() { } /// <summary> /// log4net 是否可用 /// </summary> public bool Enable { get { bool enable = false; bool.TryParse(GetAppSettingValue("LogEnable"),out enable); return enable; } } /// <summary> /// 读取appSettings中的值 /// </summary> /// <param name="key">键</param> /// <returns></returns> private string GetAppSettingValue(string key) { string value = null; try { value = System.Configuration.ConfigurationManager.AppSettings[key]; } catch { value = string.Empty; } return value; } }
public interface ILogger : IDisposable
{
void WriteLog(string msg, ELogLevel logLevel = ELogLevel.Info);
bool Enable { get; }
}
配置文件:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <!--定义输出到文件中--> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net"> <!--文件存放位置--> <param name="File" value="D:\App_Log\logs\local222.txt"></param> <param name="AppendToFile" value="true"></param> <param name="RollingStyle" value="Date"></param> <param name="DatePattern" value="yyyy.MM.dd"></param> <param name="StaticLogFileName" value="true"></param> <layout type="log4net.Layout.PatternLayout,log4net"> <!--样例--> <param name="ConversionPattern" value="%-5level [%logger][%date] - %message %newline"/> </layout> </appender> <!--定义输出到控制台命令中--> <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> <mapping> <level value="ERROR" /> <foreColor value="Red, HighIntensity" /> </mapping> <mapping> <level value="Info" /> <foreColor value="Green, HighIntensity" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%-5level [%logger][%date] - %message %newline"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="Info" /> <param name="LevelMax" value="Fatal" /> </filter> </appender> <!--定义输出到windows事件中--> <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender"> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%-5level [%logger][%date] - %message %newline"/> </layout> </appender> <!--定义输出到数据库中,这里输出到SqlServer--> <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender"> <bufferSize value="10"/> <connectionType value="System.Data.SqlClient.SqlConnection,System.Data,Version=1.0.3300.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"/> <connectionString value="Data Source=(local);uid=sa;pwd=123456;Initial Catalog=Test1;"/> <commandText value="INSERT INTO LogTest([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES(@log_date,@log_thread,@log_level,@log_logger,@log_message,@log_exception)"/> <parameter> <parameterName value="@log_date"/> <dbType value="DateTime"/> <layout type="log4net.Layout.RawTimeStampLayout"/> <!--可以认为是记录日志的时间--> </parameter> <parameter> <parameterName value="@log_thread"/> <dbType value="String"/> <size value="255"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%thread"/> <!--记录日志时的线程号--> </layout> </parameter> <parameter> <parameterName value="@log_level"/> <dbType value="String"/> <size value="50"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level"/> <!--日志级别--> </layout> </parameter> <parameter> <parameterName value="@log_logger"/> <dbType value="String"/> <size value="255"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger"/> <!--哪个记录器存储的该日志--> </layout> </parameter> <parameter> <parameterName value="@log_message"/> <dbType value="String"/> <size value="4000"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message"/> <!--日志信息--> </layout> </parameter> <parameter> <parameterName value="@log_exception"/> <dbType value="String"/> <size value="255"/> <layout type="log4net.Layout.ExceptionLayout"/> <!--异常信息--> </parameter> </appender> <!--定义输出到指定邮箱--> <appender name="SmtpAppender" type="log4net.Appender.StmpAppender"> <authentication value="Basic"/> <to value="zhanglijun@tidebuy.net"/> <from value="527563689@qq.com"/> <username value=""/> <password value=""/> <subject value=""/> <smtpHost value=""/> <bufferSize value="512"/> <layout type="log4net.Core.LevelEvaluator"> <conversionPattern value="%-5level [%logger][%date] - %message %newline"/> </layout> </appender> <root> <appender-ref ref="ADONetAppender"/> </root> </log4net> </configuration>
真正的大师永远怀着一颗学徒的心。

浙公网安备 33010602011771号