思路:
1.安装插件:安装log4net
2.使用配置:添加log4net配置信息
3.输出日志文件格式:添加日志配置
4.AssemblyInfo.cs中配置
第一步:安装log4net
第二步:在app.config添加log4net配置
新增log4net.config配置文件,内容如下,与Program.cs同一目录即可。
<configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/></configSections><log4net><!--level取值:OFF FATAL ERROR WARN INFO DEBUG ALL --><logger name="loginfo"><level value="ALL"/><appender-ref ref="InfoAppender"/></logger><appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"><!--定义文件存放位置--><param name="File" value="OneCardConsumeLog\"/><!--不以独占方式记录日志,仅在记录每个日志的最短时间内锁定,因为部署到服务器上遇到了文件被占用无法下载日志--><lockingModel type="log4net.Appender.FileAppender+MinimalLock"/><param name="AppendToFile" value="true"/><param name="MaxFileSize" value="10240"/><param name="StaticLogFileName" value="false"/><param name="DatePattern" value="yyyy-MM-dd".txt""/><param name="RollingStyle" value="Date"/><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%d [%p] - %m%n"/></layout></appender></log4net>
第三步:添加日志配置
在文件Program.cs应用程序主入口加入:
LogUtils.SetConfig();
LogUtils.cs 写入日志公共类
class LogUtils
{private static readonly ILog loginfo = LogManager.GetLogger("loginfo");/// <summary>/// 从缺省配置文件获取日志配置/// </summary>public static void SetConfig(){XmlConfigurator.Configure();}/// <summary>/// 从指定配置文件获取日志配置/// </summary>/// <param name="configFile">指定的配置文件</param>public static void SetConfig(FileInfo configFile){XmlConfigurator.Configure(configFile);}/// <summary>/// 生成分类日志/// </summary>/// <param name="info">日志信息</param>/// <param name="dirName">保存目录名,形如d:\log\aaa</param>private static void WriteSortLog(string info, string dirName){try{if (false == System.IO.Directory.Exists(dirName)){System.IO.Directory.CreateDirectory(dirName);}string path = dirName + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".txt";StreamWriter sw = new StreamWriter(path, true, System.Text.Encoding.Default);sw.WriteLine(DateTime.Now.ToString("HH:mm:ss: ") + info);sw.Close();}catch (Exception ex){string expMsg = "WriteSortLog异常:" + ex.Message + Environment.NewLine + ex.StackTrace;if (ex.InnerException != null)expMsg += Environment.NewLine + "InnerException:" + ex.InnerException.Message;Error(expMsg, ex);}}/// <summary>/// Info级 常规日志/// </summary>/// <param name="info">日志信息</param>public static void Info(string info){if (loginfo.IsInfoEnabled){loginfo.Info(info);}}/// <summary>/// Info 先生成常规日志,然后在指定目录另外创建一份日志/// 主要用来需要对日志进行分类时使用/// </summary>/// <param name="info"></param>/// <param name="dirName"></param>public static void Info(string info, string dirName){if (loginfo.IsInfoEnabled){//生成常规日志loginfo.Info(info);//生成分类日志WriteSortLog(info, dirName);}}/// <summary>/// Debug级 常规日志/// </summary>/// <param name="info">日志信息</param>public static void Debug(string info){if (loginfo.IsDebugEnabled){loginfo.Debug(info);}}/// <summary>/// Debug级 异常日志/// </summary>/// <param name="info">日志信息</param>/// <param name="exp">异常信息</param>public static void Debug(string info, Exception exp){if (loginfo.IsDebugEnabled){loginfo.Debug(info, exp);}}/// <summary>/// Error级 常规的日志/// </summary>/// <param name="info">日志信息</param>public static void Error(string info){if (loginfo.IsErrorEnabled){loginfo.Error(info);}}/// <summary>/// Error 异常日志/// </summary>/// <param name="info">日志信息</param>/// <param name="exp">异常信息</param>public static void Error(string info, Exception exp){if (loginfo.IsErrorEnabled){loginfo.Error(info, exp);}}/// <summary>/// Fatal级 常规日志/// </summary>/// <param name="info">日志信息</param>public static void Fatal(string info){if (loginfo.IsFatalEnabled){loginfo.Fatal(info);}}/// <summary>/// Fatal级 异常日志/// </summary>/// <param name="info">日志信息</param>/// <param name="exp">异常信息</param>public static void Fatal(string info, Exception exp){if (loginfo.IsFatalEnabled){loginfo.Fatal(info, exp);}}/// <summary>/// Warn级 常规日志/// </summary>/// <param name="info">日志信息</param>public static void Warn(string info){if (loginfo.IsWarnEnabled){loginfo.Warn(info);}}/// <summary>/// Warn级 异常日志/// </summary>/// <param name="info">日志</param>/// <param name="exp">异常信息</param>public static void Warn(string info, Exception exp){if (loginfo.IsWarnEnabled){loginfo.Warn(info, exp);}}
}
第四步:AssemblyInfo.cs中配置 Watch = true
在项目Properties文件夹下AssemblyInfo.cs中加入:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
最后通过
LogUtils.Error(“错误日志”);
LogUtils.Info(“正常输出日志”);
LogUtils.Warn(“温馨提示日志”);
最后启动项目:会在项目debug目录下输出日志文件夹log内