log4net使用
首先新建一个项目,然后右键项目,管理nuget包,如果需要图文,看上一文
找到Log4net然后配置文件
log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- This section contains the log4net configuration settings -->
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Log/" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<staticLogFileName value="false" />
<datePattern value="yyyy_MM_dd//yyyy_MM_dd_HH_mm_ss_fff".log"" />
<maxSizeRollBackups value="10000" />
<maximumFileSize value="1MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %message%newline" />
</layout>
</appender>
<!-- Setup the root category, add the appenders and set the default level -->
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
</configuration>
然后复制就行了
using log4net;
using log4net.Config;
using System;
using System.IO;
public class Logger
{
private static ILog logger;
static Logger()
{
if (logger == null)
{
var repository = LogManager.CreateRepository("NETCoreRepository");
//log4net从log4net.config文件中读取配置信息
XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
logger = LogManager.GetLogger(repository.Name, "InfoLogger");
}
}
public static void WriteLog(string s,string message,Exception e)
{
switch(s)
{
case "Info":
Info(message, e);
break;
case "Warn":
Warn(message, e);
break;
case "Error":
Error(message, e);
break;
case "Fatal":
Fatal(message, e);
break;
case "Debug":
Debug(message, e);
break;
}
}
/// <summary>
/// 普通日志
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Info(string message, Exception exception = null)
{
if (exception == null)
{
logger.Info(message);
Console.WriteLine(message);
}
else
{
logger.Info(message, exception);
Console.WriteLine(message,exception.Message);
}
}
/// <summary>
/// 告警日志
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Warn(string message, Exception exception = null)
{
if (exception == null)
{
logger.Warn(message);
Console.WriteLine(message);
}
else
{
logger.Warn(message, exception);
Console.WriteLine(message, exception.Message);
}
}
/// <summary>
/// 错误日志
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Error(string message, Exception exception = null)
{
if (exception == null)
{
logger.Error(message);
Console.WriteLine(message);
}
else
{
logger.Error(message, exception);
Console.WriteLine(message, exception.Message);
}
}
/// <summary>
/// 终结性错误日志
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Fatal(string message, Exception exception = null)
{
if (exception == null)
{
logger.Fatal(message);
Console.WriteLine(message);
}
else
{
logger.Fatal(message, exception);
Console.WriteLine(message, exception.Message);
}
}
/// <summary>
/// 调试错误日志
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void Debug(string message, Exception exception = null)
{
if (exception == null)
{
logger.Debug(message);
Console.WriteLine(message);
}
else
{
logger.Debug(message, exception);
Console.WriteLine(message, exception.Message);
}
}
}
这里有个工厂,所以你去主函数直接用就行了
public static void WriteLog(string s,string message,Exception e)
{
switch(s)
{
case "Info":
Info(message, e);
break;
case "Warn":
Warn(message, e);
break;
case "Error":
Error(message, e);
break;
case "Fatal":
Fatal(message, e);
break;
case "Debug":
Debug(message, e);
break;
}
}
Log.writeLog("情况",“错误信息”,异常);
直接就可以用了。具体如何设置config文件,自行百度。