using log4net;
using log4net.Appender;
using log4net.Core;
using log4net.Layout;
using log4net.Repository.Hierarchy;
using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
public class Log
{
/// <summary>
/// 日志记录
/// </summary>
private static ILog log4Net = LogManager.GetLogger("logLogger");
/// <summary>
/// 模块参数修改记录
/// </summary>
private static readonly ILog LogModify = LogManager.GetLogger("modifyLogger");
/// <summary>初始化注册RichTextBox</summary>
public static void RegisterLog()
{
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(Application.StartupPath + "\\log4net.config"));
//按理说可以通过配置log4net来达到天数控制,但是这个有时候会调整天数,故自己写逻辑
}
/// <summary>初始化时注册,让控件显示日志信息</summary>
public static void InitializeRichTextBox(RichTextBox RichTextBoxLog)
{
if (RichTextBoxLog == null)
return;
var LogPattern = "%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n";
var LogListAppender = new TextBoxBaseAppender();
LogListAppender.RichTextBoxLog = RichTextBoxLog;
LogListAppender.Layout = new PatternLayout(LogPattern);
log4net.Config.BasicConfigurator.Configure(LogListAppender);
}
/// <summary>记录模块参数变更记录 用于记录额外的一些重要记录,比如关键参数修改记录-->记录在log/modify文件下</summary>
public static void ModParamModify(string str)
{
LogModify.Info(str);
}
/// <summary>调试</summary>
public static void Debug(string str)
{
log4Net.Debug(str);
}
/// <summary>提示</summary>
public static void Info(string str)
{
log4Net.Info(str);
}
/// <summary>警告</summary>
public static void Warn(string str)
{
log4Net.Warn(str);
}
/// <summary>错误</summary>
public static void Error(string str) // error为关键字
{
log4Net.Error(str);
}
/// <summary>异常</summary>
public static void Fatal(string str)
{
log4Net.Fatal(str);
}
/// <summary>打印</summary>
public static void Print(LogLevel LogLevel, string str)
{
switch (LogLevel)
{
case LogLevel.Debug:
{
Log.Debug(str);
break;
}
case LogLevel.Info:
{
Log.Info(str);
break;
}
case LogLevel.Warn:
{
Log.Warn(str);
break;
}
case LogLevel.Error:
{
Log.Error(str);
break;
}
case LogLevel.Fatal:
{
Log.Fatal(str);
break;
}
default:
{
Log.Debug(str);
break;
}
}
}