话不多少说
上项目截图
上Singleton代码
using System;
using System.Reflection;
namespace Utility.SW.Common
{
public class Singleton<T> where T : class
{
public static bool IsInstanced
{
get { return instance != null; }
}
public static T Instance
{
get
{
if (instance == null)
{
lock (mutex)
{
if (instance == null)
{
ConstructorInfo ci = typeof(T).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, EmptyTypes, null);
if (ci == null) { throw new InvalidOperationException("类必须包含一个私有构造函数"); }
instance = (T)ci.Invoke(null);
}
}
}
return instance;
}
}
public static void Release()
{
lock (mutex)
{
instance = null;
}
}
private static object mutex = new object();
private static T instance = null;
public static readonly Type[] EmptyTypes = new Type[0];
}
}
暂时拿log4net 做测试
上Log4net 代码 (namespace 可以忽略)
using System.Reflection;
namespace Utility.SW.Common.Log
{
public class Log4netHelper : Singleton<Log4netHelper>
{
private log4net.ILog log = null;
/// <summary>
/// 构造函数,初始化log组件
/// </summary>
private Log4netHelper()
{
log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
}
/// <summary>
/// 记录一般信息
/// </summary>
/// <param name="logContent">日志描述</param>
public void LogInfo(System.String logContent)
{
if (log.IsInfoEnabled)
log.Info(logContent);
}
public void LogInfo(System.String logPrompt, System.String logContent)
{
if (log.IsInfoEnabled)
{
string logText = string.Format("{0} {1}", logPrompt, logContent);
log.Info(logText);
}
}
/// <summary>
/// 记录调试信息
/// </summary>
/// <param name="logContent">调试日志描述</param>
public void LogDebug(System.String logContent)
{
if (log.IsDebugEnabled)
log.Debug(logContent);
}
/// <summary>
/// 记录警告信息
/// </summary>
/// <param name="logContent">日志描述</param>
public void LogWarn(System.String logContent)
{
if (log.IsWarnEnabled)
log.Warn(logContent);
}
/// <summary>
/// 记录错误信息
/// </summary>
/// <param name="logContent">日志描述</param>
/// <param name="exception">异常</param>
public void LogError(System.Object logContent, System.Exception exception)
{
if (log.IsErrorEnabled)
log.Error(logContent, exception);
}
/// <summary>
/// 记录错误信息
/// </summary>
/// <param name="logContent">日志描述</param>
/// <param name="exception">异常</param>
public void LogError(System.Object logContent)
{
if (log.IsErrorEnabled)
log.Error(logContent);
}
/// <summary>
/// 记录致命错误信息
/// </summary>
/// <param name="logContent">日志描述</param>
/// <param name="exception">异常</param>
public void LogFatal(System.String logContent, System.Exception exception)
{
if (log.IsFatalEnabled)
log.Fatal(logContent, exception);
}
}
}
比如:
最后上点图片,项目生产
log4net 配置
log4net 下载
点击这里写链接内容