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);
}
}
}