首先是配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<log4net>
<appender name="ConsoleAppender"
type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log\logfile.log"/>
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<datePattern value="yyyyMMdd"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="1MB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
</appender>
<root>
<level value="All"/>
<appender-ref ref="RollingLogFileAppender"/>
<appender-ref ref="ConsoleAppender"/>
</root>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>
然后是对应的类:
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics.Tracing;
using System.Diagnostics;
using System.CodeDom.Compiler;
using log4net;
using System.Collections.Concurrent;
//指定log4net使用的config文件来读取配置信息
//[assembly: log4net.Config.XmlConfigurator(ConfigFile = @"Uti_Log4net_CF\Uti_Log4net_CF.config", Watch = true)]
namespace Share_Utilities
{
class Uti_Log4net_C
{
private static readonly ConcurrentDictionary<Type, ILog> _loggers = new ConcurrentDictionary<Type, ILog>();
private static readonly ConcurrentDictionary<String, ILog> _str_loggers = new ConcurrentDictionary<String, ILog>();
/// <summary>
/// 获取记录器
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
private static ILog GetLogger(String source)
{
if (_str_loggers.ContainsKey(source))
{
return _str_loggers[source];
}
else
{
ILog logger = LogManager.GetLogger(source);
_str_loggers.TryAdd(source, logger);
return logger;
}
}
/* Log a message object */
/// <summary>
/// 获取记录器
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
private static ILog GetLogger(Type source)
{
if (_loggers.ContainsKey(source))
{
return _loggers[source];
}
else
{
ILog logger = LogManager.GetLogger(source);
_loggers.TryAdd(source, logger);
return logger;
}
}
/* Log a message object */
/// <summary>
/// 调试信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Debug(Type source, object message)
{
ILog logger = GetLogger(source);
if (logger.IsDebugEnabled)
logger.Debug(message);
}
/// <summary>
/// 调试信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Debug(object source, object message)
{
Debug(source.GetType(), message);
}
/// <summary>
/// 调试信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="args"></param>
public static void Debug(Type source, string format, params object[] args)
{
ILog logger = GetLogger(source);
if (logger.IsDebugEnabled)
logger.DebugFormat(format, args);
}
/// <summary>
/// 调试信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="args"></param>
public static void Debug(object source, string format, params object[] args)
{
Debug(source.GetType(), format, args);
}
/// <summary>
/// 调试信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="args"></param>
public static void Info(Type source, string format, params object[] args)
{
ILog logger = GetLogger(source);
if (logger.IsInfoEnabled)
logger.InfoFormat(format, args);
}
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="args"></param>
public static void Info(object source, string format, params object[] args)
{
Info(source.GetType(), format, args);
}
/// <summary>
/// 关键信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Info(Type source, object message)
{
ILog logger = GetLogger(source);
if (logger.IsInfoEnabled)
logger.Info(message);
}
/// <summary>
/// 关键信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Info(object source, object message)
{
Info(source.GetType(), message);
}
/// <summary>
/// 警告信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Warn(Type source, object message)
{
ILog logger = GetLogger(source);
if (logger.IsWarnEnabled)
logger.Warn(message);
}
/// <summary>
/// 警告信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Warn(object source, object message)
{
Warn(source.GetType(), message);
}
/// <summary>
/// 警告信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="args"></param>
public static void Warn(Type source, string format, params object[] args)
{
ILog logger = GetLogger(source);
if (logger.IsWarnEnabled)
logger.WarnFormat(format, args);
}
/// <summary>
/// 警告信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="args"></param>
public static void Warn(object source, string format, params object[] args)
{
Warn(source.GetType(), format, args);
}
/// <summary>
/// 错误信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Error(Type source, object message)
{
ILog logger = GetLogger(source);
if (logger.IsErrorEnabled)
logger.Error(message);
}
/// <summary>
/// 错误信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Error(object source, object message)
{
Error(source.GetType(), message);
}
/// <summary>
/// 错误信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="args"></param>
public static void Error(Type source, string format, params object[] args)
{
ILog logger = GetLogger(source);
if (logger.IsErrorEnabled)
logger.ErrorFormat(format, args);
}
/// <summary>
/// 错误信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="args"></param>
public static void Error(object source, string format, params object[] args)
{
Error(source.GetType(), format, args);
}
/// <summary>
/// 失败信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Fatal(Type source, object message)
{
ILog logger = GetLogger(source);
if (logger.IsFatalEnabled)
logger.Fatal(message);
}
/// <summary>
/// 失败信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Fatal(object source, object message)
{
Fatal(source.GetType(), message);
}
/// <summary>
/// 失败信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Fatal(Type source, string format, params object[] args)
{
ILog logger = GetLogger(source);
if (logger.IsFatalEnabled)
logger.FatalFormat(format, args);
}
/// <summary>
/// 失败信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Fatal(object source, string format, params object[] args)
{
Fatal(source.GetType(), format, args);
}
/* Log a message object and exception */
/// <summary>
/// 调试信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Debug(object source, Exception exception, object message)
{
GetLogger(source.GetType()).Debug(message, exception);
}
/// <summary>
/// 关键信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Info(object source, Exception exception, object message)
{
GetLogger(source.GetType()).Info(message, exception);
}
/// <summary>
/// 警告信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Warn(object source, Exception exception, object message)
{
GetLogger(source.GetType()).Warn(message, exception);
}
/// <summary>
/// 错误信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Error(object source, Exception exception, object message)
{
GetLogger(source.GetType()).Error(message, exception);
}
/// <summary>
/// 错误信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Fatal(object source, Exception exception, object message)
{
GetLogger(source.GetType()).Fatal(message, exception);
}
/* Type String source */
/* Log a message object */
/// <summary>
/// 调试信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Debug(String source, object message)
{
ILog logger = GetLogger(source);
if (logger.IsDebugEnabled)
logger.Debug(message);
}
/// <summary>
/// 调试信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="args"></param>
public static void Debug(String source, string format, params object[] args)
{
ILog logger = GetLogger(source);
if (logger.IsDebugEnabled)
logger.DebugFormat(format, args);
}
/// <summary>
/// 调试信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="args"></param>
public static void Info(String source, string format, params object[] args)
{
ILog logger = GetLogger(source);
if (logger.IsInfoEnabled)
logger.InfoFormat(format, args);
}
/// <summary>
/// 关键信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Info(String source, object message)
{
ILog logger = GetLogger(source);
if (logger.IsInfoEnabled)
logger.Info(message);
}
/// <summary>
/// 警告信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Warn(String source, object message)
{
ILog logger = GetLogger(source);
if (logger.IsWarnEnabled)
logger.Warn(message);
}
/// <summary>
/// 警告信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="args"></param>
public static void Warn(String source, string format, params object[] args)
{
ILog logger = GetLogger(source);
if (logger.IsWarnEnabled)
logger.WarnFormat(format, args);
}
/// <summary>
/// 错误信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Error(String source, object message)
{
ILog logger = GetLogger(source);
if (logger.IsErrorEnabled)
logger.Error(message);
}
/// <summary>
/// 错误信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="args"></param>
public static void Error(String source, string format, params object[] args)
{
ILog logger = GetLogger(source);
if (logger.IsErrorEnabled)
logger.ErrorFormat(format, args);
}
/// <summary>
/// 失败信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Fatal(String source, object message)
{
ILog logger = GetLogger(source);
if (logger.IsFatalEnabled)
logger.Fatal(message);
}
/// <summary>
/// 失败信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
public static void Fatal(String source, string format, params object[] args)
{
ILog logger = GetLogger(source);
if (logger.IsFatalEnabled)
logger.FatalFormat(format, args);
}
/* Log a message object and exception */
/// <summary>
/// 调试信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Debug(String source, Exception exception, object message)
{
GetLogger(source).Debug(message, exception);
}
/// <summary>
/// 调试信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Info(String source, Exception exception, object message)
{
GetLogger(source).Debug(message, exception);
}
/// <summary>
/// 调试信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Error(String source, Exception exception, object message)
{
GetLogger(source).Debug(message, exception);
}
/// <summary>
/// 调试信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Warn(String source, Exception exception, object message)
{
GetLogger(source).Debug(message, exception);
}
/// <summary>
/// 调试信息
/// </summary>
/// <param name="source"></param>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Fatal(String source, Exception exception, object message)
{
GetLogger(source).Debug(message, exception);
}
}
}