C#中四步轻松使用log4net记录本地日志(WPF有点小区别)

在这里,记录我在项目中使用log4net记录本地日志的步骤。在不会之前感觉很难,很神秘,一旦会了之后其实没那么难。其实所有的事情都是一样的,下面我就分享一下我使用log4Net的经验。

第一步:首先从Visual Studio中的Nuget包管理中搜索下载 Log4Net dll文件 如下图:

选择安装的项目(哪个类库中需要记录日志就勾选上)

第二步:打开配置文件 WinFrom就是 App.config  Web就是 web.config 将以下配置信息加入

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <logger name="SysRFLogger">
      <level value="DEBUG" />
      <appender-ref ref="SysRFAppender" />
    </logger>
    <logger name="DebugRFLogger">
      <level value="DEBUG" />
      <appender-ref ref="DebugAppender" />
    </logger>
    <logger name="MsgLogger">
      <level value="DEBUG" />
      <appender-ref ref="MsgAppender" />
    </logger>
    <logger name="OperInfoLogger">
      <level value="DEBUG" />
      <appender-ref ref="OperInfoAppender" />
    </logger>
    <appender name="SysRFAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\syslog.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <preserveLogFileNameExtension value="true" />
      <datePattern value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\sysDebuglog.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <preserveLogFileNameExtension value="true" />
      <datePattern value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <appender name="MsgAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\Messagelog.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <preserveLogFileNameExtension value="true" />
      <datePattern value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <appender name="OperInfoAppender" type="log4net.Appender.AdoNetAppender">
      <bufferSize value="1" />
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.30319.18020, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <commandText value="INSERT INTO LOG_USEROPERLOG ([ID],[Date],[User],[Flag],[OperInfo],[OperFlag],[OperResult],[Message]) VALUES (@Id,@log_date, @user, @flag, @operinfo,@operflag, @operresult, @message)" />
      <parameter>
        <parameterName value="@Id" />
        <dbType value="String" />
        <size value="36" />
        <layout type="NT.MultithreadingTaskService.Log.Layout.UserOperLayOut,NT.MultithreadingTaskService.Log">
          <param name="ConversionPattern" value="%property{ID}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@log_date" />
        <dbType value="DateTime" />
        <layout type="log4net.Layout.RawTimeStampLayout" />
      </parameter>
      <parameter>
        <parameterName value="@user" />
        <dbType value="String" />
        <size value="64" />
        <layout type="NT.MultithreadingTaskService.Log.Layout.UserOperLayOut,NT.MultithreadingTaskService.Log">
          <param name="ConversionPattern" value="%property{User}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@flag" />
        <dbType value="Int32" />
        <layout type="NT.MultithreadingTaskService.Log.Layout.UserOperLayOut,NT.MultithreadingTaskService.Log">
          <param name="ConversionPattern" value="%property{Flag}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@operinfo" />
        <dbType value="String" />
        <size value="255" />
        <layout type="NT.MultithreadingTaskService.Log.Layout.UserOperLayOut,NT.MultithreadingTaskService.Log">
          <param name="ConversionPattern" value="%property{OperInfo}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@operflag" />
        <dbType value="String" />
        <size value="32" />
        <layout type="NT.MultithreadingTaskService.Log.Layout.UserOperLayOut,NT.MultithreadingTaskService.Log">
          <param name="ConversionPattern" value="%property{OperFlag}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@operresult" />
        <dbType value="String" />
        <size value="255" />
        <layout type="NT.MultithreadingTaskService.Log.Layout.UserOperLayOut,NT.MultithreadingTaskService.Log">
          <param name="ConversionPattern" value="%property{OperResult}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@message" />
        <dbType value="String" />
        <size value="4000" />
        <layout type="NT.MultithreadingTaskService.Log.Layout.UserOperLayOut,NT.MultithreadingTaskService.Log">
          <param name="ConversionPattern" value="%property{Message}" />
        </layout>
      </parameter>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="SysRFAppender" />
    </root>
  </log4net>

以上节点具体参数这里不做解释,可以上网查询帮助文档

注意:这两段XML要放在configuration 节点下靠前

 

第三步:打开项目AssemblyInfo.cs文件(UI层)

加入:[assembly: log4net.Config.XmlConfigurator(ConfigFile = "web.config", Watch = true)]

 注意:ConfigFile属性值是当前程序配置文件名WinForm就是App.config Web程序就是:web.config

 第四步:在需要记录日志的cs文件中初始化: private ILog _log = LogManager.GetLogger("TicketFace");

 

一般常用以下几个方法:

_log.Error();
_log.Debug();
_log.Info();

 

最后运行项目然后在以上配置文件中找到路径去文件夹里看看就生成了日志文件了。

注意:这里日志是以天为单位记录 如下:

 

WPF中有点小区别:

第三步:打开项目AssemblyInfo.cs文件(UI层)这里的配置注释不要。

在 App.xaml.cs中的的构造函数加入:log4net.Config.XmlConfigurator.Configure();

/// <summary>
/// App.xaml 的交互逻辑
/// </summary>
public partial class App : Application
{
public App()
{
log4net.Config.XmlConfigurator.Configure();
}
}

  

 

转载于:https://www.cnblogs.com/wendj/p/7880582.html

WPF 应用程序创建本地日志记录,通常我们可以使用 C# 的 System.IO 和 System.Diagnostics 日志框架来实现。以下是一个基本步骤和一个简单的例子: 1. 首先,在项目安装 `Microsoft.Extensions.Logging.FileLoggerProvider` NuGet 包,这将提供文件日志功能。 2. 创建一个 Logger 实例: ```csharp using Microsoft.Extensions.Logging; var loggerFactory = LoggerFactory.Create(builder => builder.AddFile("app.log", logLevel: LogLevel.Information)); ILogger<MyClass> logger = loggerFactory.CreateLogger<MyClass>(); ``` 这里,`MyClass` 是你想记录日志的那个类名,`app.log` 是你希望保存日志的文件名。 3. 使用 `ILogger` 对象记录日志: ```csharp public class MyClass { private readonly ILogger<MyClass> _logger; public MyClass() { _logger = loggerFactory.CreateLogger<MyClass>(); } public void DoSomething() { try { // 业务操作... _logger.LogInformation("DoSomething executed successfully."); } catch (Exception ex) { _logger.LogError($"An error occurred: {ex.Message}"); } } } ``` `LogInformation` 方法用于记录普通信息,`LogError` 则用于错误情况下的详细日志。 4. 定期清理旧的日志文件,防止无限增长: ```csharp private void ClearLogs() { FileSystemWatcher watcher = new FileSystemWatcher(Path.GetDirectoryName("app.log")); watcher.Filter = "*.log"; watcher.NotifyFilter = NotifyFilters.LastWrite; watcher.Changed += (_, args) => RemoveOldLogs(); watcher.EnableRaisingEvents = true; } private void RemoveOldLogs() { // 可以根据需要设定保留天数等规则删除旧的日志文件 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值