log4Net(寫入日誌文件)

来源:http://www.cnblogs.com/wzf-Code/archive/2016/06/13/5579919.html
-Advertisement-
Play Games

這裡就簡單介紹下log4Net對寫入日誌文件的一些瞭解,寫入資料庫類似,就不在一一介紹了。 首先去log4net下載. 然後我們新建一個控制台應用程式,並引入log4net.dll程式集,log4net/bin/net/4.5/release/log4net.dll 接下來,我們在app.confi ...


   這裡就簡單介紹下log4Net對寫入日誌文件的一些瞭解,寫入資料庫類似,就不在一一介紹了。

   首先去log4net下載.

   然後我們新建一個控制台應用程式,並引入log4net.dll程式集,log4net/bin/net/4.5/release/log4net.dll

    接下來,我們在app.config配置如下。

  

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


<log4net>
<!-- Define some output appenders -->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
   <!--輸出文件路徑-->
<file value="D:\\test.txt"/>
<appendToFile value="true"/>
<!--最多10個日誌備份文件-->
<maxSizeRollBackups value="10"/>
<!--每個文件最大1M-->
<maximumFileSize value="1024KB"/>
<!--回滾的格式按照大小-->
<rollingStyle value="Size"/>

<staticLogFileName value="true"/>

<layout type="log4net.Layout.PatternLayout">
      <!--輸出內容 分別為:%date日期,%thread線程ID,(%-5level)等級,(%logger)初始配置時自定義的名字,%message消息,%newline換行-->
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>

<root>
    <!--輸出等級限制-->
  <!--控制級別,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->

  <!--比如定義級別為INFO,則INFO級別向下的級別,比如DEBUG日誌將不會被記錄-->

<!--如果沒有定義LEVEL的值,則預設為DEBUG-->

<level value="DEBUG"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>

</log4net>

<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>

  

       然後我們在Program.cs使用如下。

  

 //從配置文件讀取log4net的配置,然後進行一個初始化工作。
log4net.Config.XmlConfigurator.Configure();

//創建一個實例,名字可隨便取
  ILog logWriete = log4net.LogManager.GetLogger("Demo2");
//這裡輸出的類型為error
  logWriete.Error("哈哈");

  Console.WriteLine("成功!");
  Console.ReadKey();

     接下效果如下:

 

 

  ---------------------------------------------------------------華麗分割線---------------------------------------------------------------------

  有些時候,我們要把為了區分配置,把log4Net的配置獨立在一個文件里。

  在這裡,我就在當前項目的根目錄下,創建一個config或者是XML文件。

  這裡我就創建一個名字為log4Net.xml文件。

  其次,我們右鍵=》屬性,把《複製到輸出目錄》項改為始終賦值。

  並配置 logNet.xml內容如下。

  

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


  <log4net>
    <!-- Define some output appenders -->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
   <!--輸出文件路徑-->
      <file value="D:\\test.txt"/>
      <appendToFile value="true"/>
      <!--最多10個日誌備份文件-->
      <maxSizeRollBackups value="10"/>
      <!--每個文件最大1M-->
      <maximumFileSize value="1024KB"/>
      <!--回滾的格式按照大小-->
      <rollingStyle value="Size"/>

      <staticLogFileName value="true"/>

      <layout type="log4net.Layout.PatternLayout">
      <!--輸出內容 分別為:%date日期,%thread線程ID,(%-5level)等級,(%logger)初始配置時自定義的名字,%message消息,%newline換行-->
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
      </layout>
    </appender>

    <root>
    <!--輸出等級限制-->
     <!--控制級別,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->  

  <!--比如定義級別為INFO,則INFO級別向下的級別,比如DEBUG日誌將不會被記錄-->

     <!--如果沒有定義LEVEL的值,則預設為DEBUG-->

      <level value="DEBUG"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>

  </log4net>
 
</configuration>

  然後,我們把app.config中的所有log4Net配置都去掉。

  

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  
  
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
  
</configuration>

 

  最後我們在Program.cs使用如下。

 //從配置文件讀取log4net的配置,然後進行一個初始化工作。
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(@"log4Net.xml"));//這裡指定路徑

/*
有些人,是直接在調用類命名上面直接打上,[assembly: log4net.Config.XmlConfigurator(ConfigFile = @"log4Net.xml", Watch = true)]這一句也是可以的。

其次,只要是ConfigureAndWatch上面這一句
在lognet.xml文件中的<<log4Net塊配置>>是可以去掉的。
*/


//創建一個實例,名字可隨便取
  ILog logWriete = log4net.LogManager.GetLogger("Demo2");
//這裡輸出的類型為error
  logWriete.Error("哈哈");
  Console.WriteLine("成功!");
  Console.ReadKey();

 

  註意事項。

    1:如果報錯,請查看配置節點。

    2:如果沒報錯,而並沒有輸出文件,請查看調用的時候是否有初始化配置這一句代碼。

 

       本文結束。

      

     如果問題,歡迎討論,咨詢,建議,意見。


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

-Advertisement-
Play Games
更多相關文章
  • Lambda表達式 簡化了匿名委托的使用,讓你讓代碼更加簡潔,優雅。據說它是微軟自c#1.0後新增的最重要的功能之一。 首先來看一下其發展 根據上面的發展歷程,可以感到Lambda表達式愈加簡化。 詳細介紹: ...
  • 回到目錄 關於邏輯刪除 對於邏輯刪除之前的做法是在實體類中加個欄位,一般是status,其中一種狀態是刪除,當然也有其它做法,如加個bool的欄位IsDeleted,這些其實都過於武斷,即它在基類裡加上後,所以實體類都會有這種特性,而對於現實的數據表,可能不顯示這種邏輯刪除的特性,如關係表,日誌表, ...
  • 背水一戰 Windows 10 之 動畫: PopInThemeAnimation - 控制項出現時的動畫, PopOutThemeAnimation - 控制項消失時的動畫, FadeInThemeAnimation - 控制項淡入的動畫, FadeOutThemeAnimation - 控制項淡出的動畫... ...
  • 本文參考Roslyn項目中的Issue:#259. 1. C# 7.0 新特性1: 基於Tuple的“多”返回值方法 簡而言之,【本地方法】就是在方法體內部定義一個方法。 其實咋眼一看,這個新特新並沒有什麼新意,因為目前大量C#的項目中,都可以使用delegate或基於delegate變形的各種方案 ...
  • 如果一個頁面中有很長的列表/內容,很多應用都會在用戶向下滾動時隱藏頁面的頭,給用戶留出更多的閱讀空間,同時提供一個方便的吸頂工具欄,比如淘寶中的店鋪頁面。 下麵是一個比較簡單的實現,如果有同學有更好的實現,歡迎留言,讓我們共同進步。 首先假設我們的頁面整體包含3部分; 結構代碼如下,為了區別清楚,我 ...
  • 最近看到滿大街的二維碼掃碼有驚喜,對二維碼也有過一些瞭解,想看看到底是什麼原理,在網上找了一些資料,自己弄了一個實例,採用的是MVC,貼出來分享一下 一維碼生成 Controller 1 <div class="col-md-4"> 2 <h2>一維碼生成</h2> 3 <div><input ty ...
  • 以前寫過一篇《單頁面多類型的多附件上傳》的文章,但是在實際項目中,這樣的並不多見,相比之下,多附件上傳卻經常用到。 而每次使用都要複製粘貼相關的代碼,雖然不麻煩,但用起來卻不太方便,一旦忘記某段代碼沒複製過來,頁面就會報錯。 於是,就想把現在用的這些代碼,變成一個用戶自定義控制項,這樣再次使用的時候就 ...
  • Web Service 是什麼? Web Service 也叫作XML Web Service,是一種網路化的,分散式的軟體系統,通常通過Http交付,可以跨編程語言和操作系統進行遠程調用操作,通常情況下,Web Service包括服務本身和客戶端,後者也被稱為消費者或請求者,可以通過網路訪問部署在 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...