log4net 獨立配置文件設置

来源:http://www.cnblogs.com/wlhacker/archive/2017/05/22/6889235.html
-Advertisement-
Play Games

1. 新建一個配置文件log4net.config,配置方法同成web.config或app.config一致; <?xml version="1.0" encoding="utf-8"?><configuration> <configSections> <section name="log4net ...


1. 新建一個配置文件log4net.config,配置方法同成web.config或app.config一致;

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>

<log4net debug="true">
<logger name="myLogger">
<level value="INFO"/>
<appender-ref ref="AdoNetAppender_SqlServer"/>
</logger>

<!--sql server資料庫1-->
<appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
<!-- BufferSize 為緩衝區大小,只有日誌記錄超5 條才會一塊寫入到資料庫 -->
<!-- 或寫為<param name="BufferSize" value="10" /> -->
<bufferSize value="0"/>
<!-- 引用 -->
<!--2.0這是對應sql2008 如是2000或2005另外配置-->
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089"/>

<!-- 連接資料庫字元串 -->
<connectionString value="Data Source=.;Initial Catalog=Log;User ID=sa;Password=123456;" />
<!-- 插入到表Log -->
<commandText value = "INSERT INTO Mylogger ([EVENTTYPE],[TIMESTAMP],[EVENTCATEGORY],[EVENT_ID],[COMPUTERNAME],[MAC_ADDRESS],[USERNAME],[SOURCETYPE],[SOURCE],[DESCRIPTION],[COLLECTDATE]) VALUES (@Event_Type,@log_date, @EventCategory, @Event_ID, @ComputerName,@Mac_Address,@UserName,@SourceType,@Source,@Description,@CollectDate) "/>

<!-- 日誌類型,這裡均為3 -->
<parameter>
<parameterName value = "@Event_Type"/>
<dbType value = "Int32"/>
<!--<dbType value = "String"/>
<size value = "50"/>-->
<!-- LogComponent 是類所在的命名空間,MyLayout 是自定義屬性所在的類,這是我們自己要寫的部分,將在下麵介紹。 -->
<layout type = "SuperAuth.Infrastructure.MyLayout">
<!-- 當用到property 時,就表明這是用戶自定義的欄位屬性啦,是log4net 中所沒有提供的欄位。 -->
<conversionPattern value = "%property{Event_Type} "/>
</layout>
</parameter>

<!-- 日誌記錄時間,RawTimeStampLayout 為預設的時間輸出格式 -->
<parameter>
<parameterName value = "@log_date"/>
<dbType value = "DateTime"/>
<layout type = "log4net.Layout.RawTimeStampLayout"/>
<!-- /這裡呢是獲取log4net 中提供的日誌時間 -->
</parameter>

<!-- 日誌分類描述 -->
<parameter>
<parameterName value = "@EventCategory"/>
<dbType value = "String"/>
<size value = "50"/>
<layout type = "SuperAuth.Infrastructure.MyLayout">
<conversionPattern value = "%property{EventCategory}"/>
</layout>
</parameter>

<!-- 日誌分類號 -->
<parameter>
<parameterName value = "@Event_ID"/>
<dbType value = "Int32"/>
<layout type = "SuperAuth.Infrastructure.MyLayout">
<conversionPattern value = "%property{Event_ID}"/>
</layout>
</parameter>

<!-- 電腦IP -->
<parameter>
<parameterName value = "@ComputerName"/>
<dbType value = "String"/>
<size value = "50"/>
<layout type = "SuperAuth.Infrastructure.MyLayout">
<conversionPattern value = "%property{ComputerName}"/>
</layout>
</parameter>

<!-- 電腦Mac 信息 -->
<parameter>
<parameterName value = "@Mac_Address"/>
<dbType value = "String"/>
<size value = "50 "/>
<layout type = "SuperAuth.Infrastructure.MyLayout">
<conversionPattern value = "%property{Mac_Address}"/>
</layout>
</parameter>

<!-- 登陸系統用戶名 -->
<parameter>
<parameterName value = "@UserName"/>
<dbType value = "String"/>
<size value = "50"/>
<layout type = "SuperAuth.Infrastructure.MyLayout">
<conversionPattern value = "%property{UserName}"/>
</layout>
</parameter>

<!-- 事件來源類型,這裡預設為Rier -->
<parameter>
<parameterName value = "@SourceType"/>
<dbType value = "String"/>
<size value = "20"/>
<layout type = "SuperAuth.Infrastructure.MyLayout">
<conversionPattern value = "%property{SourceType}"/>
</layout>
</parameter>

<!-- 事件來源 -->
<parameter>
<parameterName value = "@Source "/>
<dbType value = "String"/>
<size value = "50"/>
<layout type = "SuperAuth.Infrastructure.MyLayout">
<conversionPattern value = "%property{Source}"/>
</layout>
</parameter>

<!-- 事件描述 -->
<parameter>
<parameterName value = "@Description "/>
<dbType value = "String"/>
<size value = "4000"/>
<layout type = "SuperAuth.Infrastructure.MyLayout">
<conversionPattern value = "%property{Description}"/>
</layout>
</parameter>

<!-- 日誌收集時間 -->
<parameter>
<parameterName value = "@CollectDate"/>
<dbType value = "DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
</appender>

</log4net>
<system.web>
<compilation debug="true" targetFramework="4.6.2" />
<httpRuntime targetFramework="4.6.2" />
</system.web>

</configuration>

2.建立相關的類文件如下:

public class LogHelper
{
private LogHelper()
{
SetConfig();
}

private static readonly log4net.ILog loginfo =LogManager.GetLogger("myLogger");

private static bool IsLoadConfig = false;
private static void SetConfig()
{
XmlConfigurator.Configure();

}

/// <summary>
/// 記錄日誌
/// </summary>
/// <param name="info">提示信息</param>
public static void WriteLog(string info)
{
if (!IsLoadConfig)
{
SetConfig();
IsLoadConfig = true;
}
if (loginfo.IsInfoEnabled)
{
loginfo.Info(info);
}
}

/// <summary>
/// 記錄日誌
/// </summary>
/// <param name="info">提示信息</param>
public static void WriteLog(object info)
{
if (!IsLoadConfig)
{
SetConfig();
IsLoadConfig = true;
}
if (loginfo.IsInfoEnabled)
{
loginfo.Info(info);
}
}

/// <summary>
/// 記錄異常
/// </summary>
/// <param name="info">錯誤</param>
/// <param name="ex">Exception</param>
public static void WriteLog(string info, Exception ex)
{
if (!IsLoadConfig)
{
SetConfig();
IsLoadConfig = true;
}
if (loginfo.IsErrorEnabled)
{
loginfo.Error(info, ex);
}


}

3.在使用類的地方引入log4net.config如下

[assembly: XmlConfigurator(ConfigFile= @"Log4net.config", Watch = true)]

4.最重要的一步,也是很多人出錯的地方,右鍵log4net.config點擊屬性,按如下設置即可。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.開發環境的構成 2.gcc編譯器 功能強大、性能優越的多平臺編譯器,gcc可以將c、c++語言源程式編譯、連接成可執行文件。 以.c為尾碼的文件,C語言的源代碼文件 以.h為尾碼的文件,是程式所包含的頭文 以.i為尾碼的文件,是已經預處理過的C源代碼文件 以.o為尾碼的文件,是編譯後的目標文件 ...
  • 1.什麼是程式 指揮電腦執行我們想要它做的動作,而依照順序執行的一組指令 2.程式的作用是什麼 指揮電腦工作 3.程式的特征 1.程式是一行一行的執行 2.是一種與電腦溝通的語言 3.程式是由特定的語法和關鍵字構成 4.程式的執行,從入口點開始,原則上是由上而下,從左到右執行 4.程式語言的演 ...
  • 1.獲取一個數據集表 DataTable dt = selectDEGS(type, words, KUser); 2.刪除某一列 dt.Columns.Remove("TaskID");//TaskID為列名稱 3.替換某一列名稱 dt.Columns["TaskState"].ColumnNam ...
  • 如今框架兩字已經爛大街了,xx公司架構設計隨處可見,不過大多看個熱鬧,這些框架如何來的,細節又是如何思考的,相互之間的隔離依據又是什麼...相信很多朋友應該依然存在自己的疑惑,特別是越來越火熱的微服務以及衍生的微服務網關產品,正好最近打算寫一個小開源框架OSS.Core,過程中有一點思考,通過這篇文 ...
  • 本文章是在VS2017的環境下,.net core 1.1版本以上。 在這期間,由於.net core 並不基於IIS,我們的過去的網路請求代碼在.net core框架下,有可能會出現不相容,報錯的現象。這裡大致介紹下在.net core 下如何進行http請求,主要仍然是GET和POST方法,有錯 ...
  • Netop.Core主要提供的服務是類工廠服務及AOP服務,當然還其它一些小服務: 一、對話上下文Netop.Core.Context.SessionContext 此對話上下文可用在桌面程式和ASP.NET程式,可用SetData和GetData在上下文中傳遞數據。方法有: public stat ...
  • 參考文章:http://www.cnblogs.com/zhuyongblogs/p/5752638.html http://www.cnblogs.com/knowledgesea/p/5145239.html ...
  • 一、概述 1、quartz.net 是一款從java quartz 上延伸出來的定時任務框架。 2、我在網上看到很多大神寫過關於quartz.net 的博客、文章等,在這些博客文章里也學會了很多關於quartz的知識。今天博主也想寫一篇關於quartz的文章(不足之處望大神斧正),希望能幫助正在學習 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...