using log4net; using log4net.Appender; using log4net.Config; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Text; namespace CnasSynchronousCommon { public static class AppLog { //private static ILog log; public static ILog logInfo; public static ILog logErr; public static ILog logServiceInfo; static AppLog() { XmlConfigurator.ConfigureAndWatch(new FileInfo(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile)); //log = LogManager.GetLogger(typeof(AppLog)); logInfo = LogManager.GetLogger("Log"); logErr = LogManager.GetLogger("Err"); logServiceInfo = LogManager.GetLogger("ServiceLog"); } public static void DeleteLog(int days) { DeleteLog(logInfo, days); DeleteLog(logErr, days); DeleteLog(logServiceInfo, days); } private static void DeleteLog(ILog _log, int days) { var apps = _log.Logger.Repository.GetAppenders(); if (apps.Length <= 0) { return; } var now = DateTime.UtcNow.AddDays(days); foreach (var item in apps) { if (item is RollingFileAppender) { RollingFileAppender roll = item as RollingFileAppender; var dir = Path.GetDirectoryName(roll.File); var files = Directory.GetFiles(dir, "*.txt"); foreach (var filePath in files) { var file = new FileInfo(filePath); if (file.CreationTimeUtc < now) { try { file.Delete(); } catch (Exception ex) { Error(ex.Message); } } } } } } public static void Info() { throw new NotImplementedException(); } //public static void Debug(object message) //{ // log.Debug(message); //} //public static void DebugFormatted(string format, params object[] args) //{ // log.DebugFormat(format, args); //} //public static void Info(object message) //{ // log.Info(message); //} //public static void InfoFormatted(string format, params object[] args) //{ // log.InfoFormat(format, args); //} //public static void Warn(object message) //{ // log.Warn(message); //} //public static void Warn(object message, Exception exception) //{ // log.Warn(message, exception); //} //public static void WarnFormatted(string format, params object[] args) //{ // log.WarnFormat(format, args); //} //public static void Error(object message) //{ // log.Error(message); //} //public static void Error(object message, Exception exception) //{ // log.Error(message, exception); //} //public static void ErrorFormatted(string format, params object[] args) //{ // log.ErrorFormat(format, args); //} //public static void Fatal(object message) //{ // log.Fatal(message); //} //public static void Fatal(object message, Exception exception) //{ // log.Fatal(message, exception); //} //public static void FatalFormatted(string format, params object[] args) //{ // log.FatalFormat(format, args); //} /// /// 记录正常的消息 /// /// 消息内容 public static void Info(string msg) { logInfo.Info(msg); } /// /// 记录异常信息 /// /// 异常信息内容 public static void Error(string msg) { StackTrace stackTrace = new StackTrace(); StackFrame stackFrame = stackTrace.GetFrame(1); MethodBase methodBase = stackFrame.GetMethod(); logErr.Error("类名:" + methodBase.ReflectedType.Name + " 方法名:" + methodBase.Name + " 信息:" + msg); } /// /// 记录服务执行信息 /// /// public static void ServiceInfo(string msg) { StackTrace stackTrace = new StackTrace(); StackFrame stackFrame = stackTrace.GetFrame(1); MethodBase methodBase = stackFrame.GetMethod(); logServiceInfo.Info("类名:" + methodBase.ReflectedType.Name + " 方法名:" + methodBase.Name + " 信息:" + msg); } } }