配置文件
<log4net>
<logger name="main">
<!--日志类的名字-->
<!--<level value="ALL,INFO" />-->
<level value="ALL" />
<!--定义记录的日志级别-->
<appender-ref ref="RollingLog1FileAppender" />
<!--记录到哪个介质中去-->
</logger>
<logger name="Arm1Data1Position">
<level value="ALL" />
<appender-ref ref="RollingLog5FileAppender" />
</logger>
<appender name="RollingLog1FileAppender" type="log4net.Appender.RollingFileAppender">
<File value="Logs\" />
<!--是否是向文件中追加日志-->
<AppendToFile value="true" />
<!--每个文件的大小-->
<MaximumFileSize value="10MB"/>
<!--log文件数-->
<MaxSizeRollBackups value="100" />
<!--日志文件名是否是固定不变的-->
<StaticLogFileName value="false" />
<!--日志文件名格式为:yyyy-MM-dd.log-->
<DatePattern value="yyyyMMdd\\""yyyyMMdd-HH'.log'" />
<!--日志根据日期滚动-->
<RollingStyle value="Date" />
<layout type="log4net.Layout.PatternLayout">
<ConversionPattern value="%date [%thread] [%level] %message %newline" />
</layout>
</appender>
<appender name="RollingLog5FileAppender" type="log4net.Appender.RollingFileAppender">
<File value="Logs\" />
<AppendToFile value="true" />
<MaximumFileSize value="10MB"/>
<MaxSizeRollBackups value="100" />
<StaticLogFileName value="false" />
<DatePattern value="yyyyMMdd\\"Arm1Data1Position"yyyyMMdd-HH'.log'" />
<RollingStyle value="Date" />
<layout type="log4net.Layout.PatternLayout">
<ConversionPattern value="%date [%thread] [%level] %message %newline" />
</layout>
</appender>
</log4net>
loghelper
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Configuration/log4net.config")]
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CommonLogger
{
/// <summary>
/// 日志记录工具
/// </summary>s
public class Logger
{
public bool IsDebugEnabled { get { return log.IsDebugEnabled; } }
public bool IsInfoEnabled { get { return log.IsInfoEnabled; } }
public bool IsWarnEnabled { get { return log.IsWarnEnabled; } }
public bool IsErrorEnabled { get { return log.IsErrorEnabled; } }
public bool IsFatalEnabled { get { return log.IsFatalEnabled; } }
private ILog log;
//一般为className
private string messageHead;
/ <summary>
/ 构造日志记录工具
/ </summary>
/ <param name="name">类名称</param>
/ <returns>构造日志记录工具实例</returns>
//public static Logger GetLogger(string name)
//{
// return new Logger(name);
//}
/ <summary>
/ 构造日志记录工具
/ </summary>
/ <param name="type">类类型</param>
/ <returns>构造日志记录工具实例<</returns>
//public static Logger GetLogger(Type type)
//{
// return new Logger(type);
//}
/// <summary>
/// 关闭日志记录
/// </summary>
public static void Shutdown()
{
LogManager.Shutdown();
}
/// <summary>
/// 构造方法
/// </summary>
/// <param name="name">类名称</param>
//public Logger(string name)
//{
// log = LogManager.GetLogger(name);
//}
public Logger(string name, Type messageHead)
{
this.messageHead = "[" + messageHead.ToString() + "] ";
log = LogManager.GetLogger(name);
}
/// <summary>
/// 构造方法
/// </summary>
/// <param name="name">类类型</param>
//public Logger(Type type)
//{
// log = LogManager.GetLogger(type);
//}
public void Close()
{
}
private string GetCodeMessage(string code)
{
return code + " ";
}
/// <summary>
/// 写入Debug级别日志
/// </summary>
public void Debug(string message, params object[] args)
{
message = messageHead + message;
if (IsDebugEnabled)
{
log.DebugFormat(message, args);
}
}
/// <summary>
/// 写入Debug级别日志
/// </summary>
public void Debug(string code, string message, params object[] args)
{
message = messageHead + message;
if (IsDebugEnabled)
{
log.DebugFormat(GetCodeMessage(code) + message, args);
}
}
/// <summary>
/// 写入Info级别日志
/// </summary>
public void Info(string message, params object[] args)
{
message = messageHead + message;
if (IsInfoEnabled)
{
log.InfoFormat(message, args);
}
}
/// <summary>
/// 写入Info级别日志
/// </summary>
public void Info(string code, string message, params object[] args)
{
message = messageHead + message;
if (IsInfoEnabled)
{
log.InfoFormat(GetCodeMessage(code) + message, args);
}
}
/// <summary>
/// 写入Warn级别日志
/// </summary>
public void Warn(string message, params object[] args)
{
message = messageHead + message;
if (IsWarnEnabled)
{
log.WarnFormat(message, args);
}
}
/// <summary>
/// 写入Warn级别日志
/// </summary>
public void Warn(string code, string message, params object[] args)
{
message = messageHead + message;
if (IsWarnEnabled)
{
log.WarnFormat(GetCodeMessage(code) + message, args);
}
}
/// <summary>
/// 写入Error级别日志
/// </summary>
public void Error(string message, params object[] args)
{
message = messageHead + message;
if (IsErrorEnabled)
{
log.ErrorFormat(message, args);
}
}
/// <summary>
/// 写入Error级别日志
/// </summary>
public void Error(string code, string message, params object[] args)
{
message = messageHead + message;
if (IsErrorEnabled)
{
log.ErrorFormat(GetCodeMessage(code) + message, args);
}
}
/// <summary>
/// 写入Error级别日志
/// </summary>
public void Error(string code, string message, Exception e)
{
message = messageHead + message;
if (IsErrorEnabled)
{
log.ErrorFormat(GetCodeMessage(code) + message + ", e = " + e.ToString());
}
}
/// <summary>
/// 写入Error级别日志
/// </summary>
public void Error(string code, Exception e)
{
//message = messageHead + message;
if (IsErrorEnabled)
{
log.ErrorFormat(GetCodeMessage(code) + ", e = " + e.ToString());
}
}
/// <summary>
/// 写入Fatal级别日志
/// </summary>
public void Fatal(string message, params object[] args)
{
message = messageHead + message;
if (IsFatalEnabled)
{
log.FatalFormat(message, args);
}
}
/// <summary>
/// 写入Fatal级别日志
/// </summary>
public void Fatal(string code, string message, params object[] args)
{
message = messageHead + message;
if (IsFatalEnabled)
{
log.FatalFormat(GetCodeMessage(code) + message, args);
}
}
/// <summary>
/// 写入Fatal级别日志
/// </summary>
public void Fatal(string code, string message, Exception e)
{
message = messageHead + message;
if (IsFatalEnabled)
{
log.FatalFormat(GetCodeMessage(code) + message + ", e = " + e.ToString());
}
}
/// <summary>
/// 写入Fatal级别日志
/// </summary>
public void Fatal(string code, Exception e)
{
//message = messageHead + message;
if (IsFatalEnabled)
{
log.FatalFormat(GetCodeMessage(code) + ", e = " + e.ToString());
}
}
}
public enum LogType
{
main,
motor,
Move,
PlatformMotor,
Arm1Data1Position,
Arm1Data2Position,
Arm2Data1Position,
Arm2Data21Position
}
}
调用
static readonly CommonLogger.Logger loggermain = new CommonLogger.Logger(nameof(CommonLogger.LogType.main), (typeof(Form1)));
private void Form1_Load(object sender, EventArgs e)
{
loggermain.Info(textBox1.Text);
loggermotor.Info(textBox1.Text);
loggerArm2Data2Position.Info(textBox1.Text);
}