C# log4net 日志输出的实现示例

作者:letisgo5 时间:2023-04-27 06:50:12 

思路:
1.安装插件:安装log4net
2.使用配置:添加log4net.config配置文件
3.输出日志文件格式:添加日志配置
4.AssemblyInfo.cs中配置

第一步:安装log4net

C# log4net 日志输出的实现示例

C# log4net 日志输出的实现示例

第二步:添加log4net.config配置文件

新增log4net.config配置文件,内容如下,与Program.cs同一目录即可。


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<log4net>
<!--level取值:OFF FATAL ERROR WARN INFO DEBUG ALL -->
<logger name="loginfo">
<level value="ALL"/>
<appender-ref ref="InfoAppender"/>
</logger>
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="log\\"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<param name="AppendToFile" value="true"/>
<param name="MaxFileSize" value="10240"/>
<param name="StaticLogFileName" value="false"/>
<param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;"/>
<param name="RollingStyle" value="Date"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%p] - %m%n"/>
</layout>
</appender>
</log4net>
</configuration>

并设置 – 属性 – 复制到输出目录为:始终复制

C# log4net 日志输出的实现示例

第三步:添加日志配置

在文件Program.cs应用程序主入口加入:


LogUtils.SetConfig(new FileInfo(Application.StartupPath + @"\log4net.config"));

C# log4net 日志输出的实现示例

LogUtils.cs 写入日志公共类


class LogUtils
{
private static readonly ILog loginfo = LogManager.GetLogger("loginfo");

/// <summary>
/// 从缺省配置文件获取日志配置
/// </summary>
public static void SetConfig()
{
XmlConfigurator.Configure();
}

/// <summary>
/// 从指定配置文件获取日志配置
/// </summary>
/// <param name="configFile">指定的配置文件</param>
public static void SetConfig(FileInfo configFile)
{
XmlConfigurator.Configure(configFile);
}

/// <summary>
/// 生成分类日志
/// </summary>
/// <param name="info">日志信息</param>
/// <param name="dirName">保存目录名,形如d:\log\aaa</param>
private static void WriteSortLog(string info, string dirName)
{
try
{
if (false == System.IO.Directory.Exists(dirName))
{
System.IO.Directory.CreateDirectory(dirName);
}
string path = dirName + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
StreamWriter sw = new StreamWriter(path, true, System.Text.Encoding.Default);
sw.WriteLine(DateTime.Now.ToString("HH:mm:ss: ") + info);
sw.Close();
}
catch (Exception ex)
{
string expMsg = "WriteSortLog异常:" + ex.Message + Environment.NewLine + ex.StackTrace;

if (ex.InnerException != null)
expMsg += Environment.NewLine + "InnerException:" + ex.InnerException.Message;

Error(expMsg, ex);
}
}

/// <summary>
/// Info级 常规日志
/// </summary>
/// <param name="info">日志信息</param>
public static void Info(string info)
{
if (loginfo.IsInfoEnabled)
{
loginfo.Info(info);
}
}

/// <summary>
/// Info 先生成常规日志,然后在指定目录另外创建一份日志
/// 主要用来需要对日志进行分类时使用
/// </summary>
/// <param name="info"></param>
/// <param name="dirName"></param>
public static void Info(string info, string dirName)
{
if (loginfo.IsInfoEnabled)
{
//生成常规日志
loginfo.Info(info);

//生成分类日志
WriteSortLog(info, dirName);
}
}

/// <summary>
/// Debug级 常规日志
/// </summary>
/// <param name="info">日志信息</param>
public static void Debug(string info)
{
if (loginfo.IsDebugEnabled)
{
loginfo.Debug(info);
}
}

/// <summary>
/// Debug级 异常日志
/// </summary>
/// <param name="info">日志信息</param>
/// <param name="exp">异常信息</param>
public static void Debug(string info, Exception exp)
{
if (loginfo.IsDebugEnabled)
{
loginfo.Debug(info, exp);
}
}

/// <summary>
/// Error级 常规的日志
/// </summary>
/// <param name="info">日志信息</param>
public static void Error(string info)
{
if (loginfo.IsErrorEnabled)
{
loginfo.Error(info);
}
}

/// <summary>
/// Error 异常日志
/// </summary>
/// <param name="info">日志信息</param>
/// <param name="exp">异常信息</param>
public static void Error(string info, Exception exp)
{
if (loginfo.IsErrorEnabled)
{
loginfo.Error(info, exp);
}
}

/// <summary>
/// Fatal级 常规日志
/// </summary>
/// <param name="info">日志信息</param>
public static void Fatal(string info)
{
if (loginfo.IsFatalEnabled)
{
loginfo.Fatal(info);
}
}

/// <summary>
/// Fatal级 异常日志
/// </summary>
/// <param name="info">日志信息</param>
/// <param name="exp">异常信息</param>
public static void Fatal(string info, Exception exp)
{
if (loginfo.IsFatalEnabled)
{
loginfo.Fatal(info, exp);
}
}

/// <summary>
/// Warn级 常规日志
/// </summary>
/// <param name="info">日志信息</param>
public static void Warn(string info)
{
if (loginfo.IsWarnEnabled)
{
loginfo.Warn(info);
}
}

/// <summary>
/// Warn级 异常日志
/// </summary>
/// <param name="info">日志</param>
/// <param name="exp">异常信息</param>
public static void Warn(string info, Exception exp)
{
if (loginfo.IsWarnEnabled)
{
loginfo.Warn(info, exp);
}
}
}

第四步:AssemblyInfo.cs中配置 Watch = true

在项目Properties文件夹下AssemblyInfo.cs中加入:


[assembly: log4net.Config.XmlConfigurator(Watch = true)]

C# log4net 日志输出的实现示例

最后通过


LogUtils.Error(“错误日志”);
LogUtils.Info(“正常输出日志”);
LogUtils.Warn(“温馨提示日志”);

最后启动项目:会在项目debug目录下输出日志文件夹log内

来源:https://blog.csdn.net/qq_16771097/article/details/120845149

标签:C#,log4net,日志,输出
0
投稿

猜你喜欢

  • 通过实例讲解springboot整合WebSocket

    2023-03-07 07:02:03
  • Java System类用法实战案例

    2023-04-11 07:28:59
  • JAVA 枚举单例模式及源码分析的实例详解

    2022-04-30 23:57:44
  • C#微信公众号与订阅号接口开发示例代码

    2023-07-20 09:11:07
  • Android中EditText和AutoCompleteTextView设置文字选中颜色方法

    2022-12-05 04:45:30
  • java中struts2实现文件上传下载功能实例解析

    2022-03-31 06:47:38
  • C# 构造函数如何调用虚方法

    2023-05-12 00:08:57
  • 记一次线程爆满导致服务器崩溃的问题排查及解决

    2022-09-23 06:43:09
  • 利用HorizontalScrollView实现滑动页面时的缩放效果

    2022-12-09 13:22:32
  • Android中外接键盘的检测的实现

    2023-07-27 21:15:13
  • Mybatis-Plus分页的使用与注意事项

    2022-08-14 22:00:56
  • 在Android中使用WebSocket实现消息通信的方法详解

    2022-06-10 06:26:18
  • Java实现文件读取和写入过程解析

    2023-06-28 11:35:36
  • Java网络编程TCP实现文件上传功能

    2023-01-02 00:00:27
  • Android实用图文教程之代码混淆、第三方平台加固加密、渠道分发

    2022-06-23 18:12:44
  • Android自定义StepView仿外卖配送进度

    2022-07-30 01:34:35
  • java mail使用qq邮箱发邮件的配置方法

    2023-07-02 07:58:56
  • Java实现蓝桥杯G将军的示例代码

    2022-05-01 08:44:58
  • C#集合之列表的用法

    2021-12-27 19:46:43
  • C#中缓存System.Web.Caching用法总结

    2021-09-05 04:41:11
  • asp之家 软件编程 m.aspxhome.com