1. 如何編寫log4j.properties文件,配置日誌信息
第一步:在工程中加入log4j所使用的jar文件
1:項目 > 屬性 :彈出項目的屬性窗口
2:Java構建路徑>?庫>?添加外部JAR:彈出選擇JAR的窗口
3:通過選擇JAR的窗口,找到log4j-1.2.x.jar,並確認
4:回到項目的屬性窗口,點擊確定
第二步:創建log4j.properties文件
1:選擇欲使用log4j的項目>?右鍵點擊src >?新建>?其他 :彈出選擇向導窗口
2:在選擇向導窗口中,選擇常規?> 文件?> 下一步:彈出新建文件的窗口
3:在新建文件窗口中,輸入文件名log4j.properties ? 完成:創建工作結束
第三步:使用log4j記錄日誌信息
import org.apache.log4j.Logger;
public class Log4j {
public static void main(String[] args) {
Logger logger = Logger.getLogger(AccpTeacherLog4j.class.getName());//獲取日誌記錄器,這個記錄器將負責控制日誌信息
try {
logger.debug("設置教員的編號。");//使用Logger對象的debug、info方法輸出日誌信息
} catch (IllegalArgumentException ex) {
logger.info(ex.getMessage());//使用Logger對象的debug、info方法輸出日誌信息
}
}
}
第四步:編寫log4j.properties文件,配置日誌信息
### 把日誌信息輸出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender//日誌信息將寫到控制台
log4j.appender.stdout.Target=System.out//信息列印到System.out上
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n//指定輸出格式:顯示日期和log信息
### 把日誌信息輸出到文件:accp.log ###
log4j.appender.file=org.apache.log4j.FileAppender//日誌信息將寫到文件中
log4j.appender.file.File=accp.log//指定日誌輸出的文件名
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n//指定輸出格式:顯示日期,日誌發生位置和日誌信息
### 設置優先順序別、以及輸出源 ###
log4j.rootLogger=debug, stdout, file//設置優先順序別為debug、
日誌被輸出到多個輸出源
註:優先順序從高到低分別是ERROR、WARN、INFO、DEBUG
在此處,如果優先順序別設為info,那麼使用debug方法列印的日誌信息將不被輸出
2. SpringBoot日誌logback配置
在前一個項目simple-boot-demo項目中配置日誌相關。
SpringBoot日誌依賴為: spring-boot-starter-logging ,不過對於web項目,已經引入了 spring-boot-starter-web ,默認已經自帶了日誌的 spring-boot-starter-logging ,已經默認引入了 logback 實現,只需要配置application.yml即可。
Spring內部使用 Commons Logging ,SpringBoot項目日誌實現可以用log4j2,logback,JDK (Java Util Logging)等。
參考文檔:
https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/reference/html/howto.html#howto-logging
https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/reference/html/spring-boot-features.html#boot-features-logging
level是個map,配置不同的日誌名稱的級別,一般情況下都是配置些包名稱就可以了,因為一般都是用類名作為日誌名稱,常見寫法如下:
默認配置下只會在控制台輸出日誌,沒有文件日誌,可以配置文件名來控制文件輸出。
日誌文件配置:
日誌配置示例:
另外一些文件日誌配置如下,主要配置文件大小分隔、歷史記錄、輸出格式等,這些配置在IDE中都有提示輸入:
注意:這些配置在使用自定義的配置文件 logging.config=classpath:logback-spring.xml 時,如果include引入sping-boot項目中的logback配置xml片段,這些application.yml中的配置也是有效的,而且level配置還是優先於配置文件
日誌可以分組配置,針對部分日誌名稱定義一個分組,可以統一配置此分組的級別:
SpringBoot內置的日誌分組:
SpringBoot如果要使用自定義的logback作為日誌實現,需要編寫logback.xml,但是引入logback之後,logback會自動查找logback.xml,因此不能把名字定義為logback.xml,否則可能早於SpringBoot初始化,造成一些配置無效問題。
使用 logback-spring.xml 或者使用 loging.config 來指定配置文件(默認名字為 logback-spring.xml 的文件springboot會自動獲取到,自定義名字需要手動配置):
在spring-boot項目的jar包中,spring為了簡化配置,已經在項目中內置了一些logback的配置片段,方便使用include方式引入,打開可以看到內容是用 <included></include> 包裹,因此自定義配置文件 logback.xml 的時候直接include即可。
配置片段路徑: org/springframework/boot/logging/logback/
典型 logback.xml 配置文件如下,其中引用了spring-boot提供的xml片段:
上面的配置是文件取名為 demo-logback.xml ,方便引入。
配置application.yml:
3. 怎麼給項目配置日誌文件
您可以創建日誌文件,並使其包含與互操作性、程序載入和網路有關的診斷信息。通過設置注冊表項,可以啟用日誌記錄。首先,設置一個注冊表項以啟用常規日誌記錄,然後針對所需的日誌記錄組件和選項來設置注冊表項。
可以使用下列方法設置注冊表項:
使用 Visual Studio 中的遠程注冊表編輯器。
在 .NET Compact Framework 2.0 Service Pack 1 中,使用遠程性能監視器中的日誌記錄選項。有關遠程性能監視器的更多信息,請參見 如何:在運行時監視性能。
在 .NET Compact Framework 3.5 中,可以使用日誌記錄工具 NetCFLogging.exe,該工具提供了用於啟用和禁用日誌記錄的簡單的圖形用戶界面。此工具包括在 Power Toys for .NET Compact Framework 中。有關更多信息,請參見 Power Toys for .NET Compact Framework。
使用 Registry 和 RegistryKey 類,.NET Compact Framework 2.0 版及更高版本支持這些類。
下表對這些日誌文件進行了總結。
日誌記錄組件
日誌文件內容
互操作
記錄 COM 互操作調用。提供有關平台調用和封送處理的信息。
錯誤
記錄所有未處理的異常和本機異常。將錯誤記錄到日誌文件和 OutputDebugString 中。將為位於當前路徑的每個程序集創建日誌文件,並將其應用於當前會話。在第一次出現未處理的異常或本機異常之後,將覆蓋日誌文件。
載入程序
記錄有關程序載入的信息。文件標頭包含下列信息:
應用程序名稱。
進程 ID(由 Windows Embedded CE 提供)。
創建日誌文件的本地日期和時間。其格式不是全局性的,而是區域性特定的。
.NET Compact Framework 版本,例如 2.0.5021.00。
與平台相關的信息,例如 Windows Embedded CE v5.0.1400 (CEPC) WinCE5x86 debug Dev i386 IJITv2。
文件提供以下信息:
強制狀態(兼容性模式)。
載入模塊時為模塊指定的信任級別。
解析方法時失敗。
解析類型時失敗。
查找或載入程序集或模塊時失敗。
程序集載入成功。
無效的元數據版本。
查找平台調用 DLL 時失敗。
在平台調用 DLL 中查找函數時失敗。
策略文件的名稱,或者指出缺少該文件的事實。
策略文件處理過程中的主要錯誤。
託管程序集基於策略的重定向。
此外,還可以包括有關全局程序集緩存的信息。
網路
記錄網路流量。網路日誌文件是二進制文件,如果沒有 .NET Compact Framework 日誌查看器 Logviewer.exe,則無法訪問該文件。在 .NET Compact Framework 3.5 及更高版本中,該日誌查看器包含在 Power Toys for .NET Compact Framework 中。有關更多信息,請參見 Power Toys for .NET Compact Framework。
由於網路日誌記錄發生在 Windows 套接字層,因此日誌文件只包含網路數據包信息。這包括通過網路發送的數據,其中有些可能是敏感數據,因而需要進行加密。
終結器
記錄在垃圾回收器丟棄對象之前未釋放這些對象的類名。.NET Compact Framework 3.5 及更高版本支持此日誌。
對象名不包含在日誌中,原因是這些名稱對於公共語言運行時 (CLR) 不可用。但是,未釋放的對象的類名有助於識別這些對象。未釋放的對象在應用程序中可能造成性能問題。
說明:
某些情況下,調用終結器的是 .NET Compact Framework 而不是應用程序代碼。
此文件包含以下信息:
指示終結器何時對對象運行垃圾回收器的時間戳。
被終結對象的類。
跟蹤
記錄 Windows Communication Foundation (WCF) 的代碼異常。桌面 .NET Framework 支持三種日誌記錄:跟蹤、消息處理和事件日誌記錄。.NET Compact Framework 上的 WCF 只支持通過跟蹤日誌記錄來跟蹤代碼異常,但它不記錄警告和錯誤消息。
.NET Compact Framework 3.5 及更高版本支持此日誌。
默認情況下,系統會將日誌文件寫入包含被診斷的應用程序的目錄。但是,您可以使用注冊表項指定路徑和其他選項,如下所示:
使用其他路徑寫入日誌文件。這需要安全注冊表的訪問許可權。
在日誌文件名中包含應用程序名稱。
在日誌文件名中包含進程 ID。
日誌文件名由以下幾部分組成,其中組件 可以是「互操作」、「錯誤」、「載入程序」或「網路」、「終結器」或「跟蹤」:
netcf_應用程序名稱_組件_進程 ID.log
應用程序名稱和進程 ID 為可選項,它們基於注冊表設置。
例如,對於名為 MyApp.exe 的應用程序,其載入程序日誌文件可命名如下:
netcf_MyApp_Loader_2066923010.log
有關如何檢查互操作日誌文件和載入程序日誌文件等日誌文件的信息,請參見 日誌文件信息。
啟用日誌記錄
將以下 Enabled 項的值設置為 1:
HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\Enabled
必須設置此項值才能啟用六種日誌記錄:互操作、載入程序、錯誤、網路、終結器和跟蹤。請注意,默認情況下,Logging 下的子項並不存在。
可以通過將此值設置為 0(零)來關閉所有日誌記錄。
指定日誌文件路徑(可選)
將以下 Path 項的值設置為表示日誌文件位置的字元串:
HKLM\Security\.NETCompactFramework\Diagnostics\Logging\Path
此項只能通過可寫入安全注冊表的應用程序來訪問。如果未指定路徑,系統會將日誌文件寫入包含應用程序的目錄。
在名稱中包含應用程序(可選)
將以下 UseApp 項的值設置為 1:
HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\UseApp
如果要運行多個應用程序並為每個應用程序獲取單獨的日誌文件,則可以使用此項。如果有兩個應用程序將日誌文件寫入同一目錄,則當第二個應用程序運行時,較早的日誌文件始終會被較新的日誌文件覆蓋。UseApp 項可以用作日誌文件的區分符。
在名稱中包含進程 ID(可選)
將以下 UsePid 項的值設置為 1:
HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\UsePid
如果要多次運行同一個應用程序並為每個實例創建單獨的日誌,則可以使用此項。此設置會在日誌文件名中添加進程 ID,以使應用程序的每個實例都能用不同的名稱創建新日誌文件。
在事件發生時記錄事件(可選)
將以下 Flush 項的值設置為 1:
HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\Flush
設置此值後,公共語言運行時 (CLR) 便會在事件發生時立即將日誌事件寫入日誌文件,而不是先將事件保存在緩沖區中,並在寫滿緩沖區時才寫入日誌文件。此設置會給應用程序的性能帶來負面影響,並可能稍稍修改應用程序的計時。但是,它有助於診斷與應用程序故障或其他錯誤有關的問題,因為您可能需要查看導致錯誤的最後幾個事件。如果不存在或未設置此項,則系統將只有在寫滿緩沖區後,才會向日誌文件寫入數據。
4. Spring Boot中的日誌配置
在默認情況下Spring Boot只會在控制台輸出日誌。
如果不用復雜的功能,只是希望能在文件中輸出同樣的日誌。
只需要在application.properity加入如下配置:
要想更加定製化地進行日誌輸出,需要自己寫logback.xml配置文件,在resources目錄下新建logback.xml文件,spring-boot會自動讀取該文件,而棄用默認配置。
一種配置,如下所示。其中配置了控制台、文件兩種日誌輸出方式。並且文件時按天另存為新文件,並個性化設置了日誌輸出格式。同時也做到了給具體包設置不同的日誌級別。
https://blog.csdn.net/liujun03/article/details/82684209
5. httpd服務自定義日誌文件、配置https訪問以及強制https跳轉
1、建立httpd服務,要求:
(1) 提供兩個基於名稱的虛擬主機:
www1.stuX.com ,頁面文件目錄為/web/vhosts/www1;錯誤日誌為/var/log/httpd/www1/error_log,訪問日誌為/var/log/httpd/www1/access_log;
www2.stuX.com ,頁面文件目錄為/web/vhosts/www2;錯誤日誌為/var/log/httpd/www2/error_log,訪問日誌為/var/log/httpd/www2/access_log;
(2) 通過 www1.stuX.com/server-status 輸出其狀態信息,且要求只允許提供賬號的用戶訪問;
(3) www1不允許192.168.0.88主機訪問;
2、為上面的第2個虛擬主機提供https服務,使得用戶可以通過https安全的訪問此web站點;
(1) 要求使用證書認證,證書中要求使用國家(CN),州(Beijing),城市(Beijing),組織為(MageE);
(2) 設置部門為Ops, 主機名為 www2.stuX.com ;
3、為https訪問配置強制跳轉,訪問 http://www2.stuX.com 會跳轉到 https://www2.stuX.com 上面去。
在進行配置前,首先安裝httpd服務及mod_ssl:
首先創建頁面文件目錄及日誌文件目錄:
隨後編輯配置配置文件:
之後配置用戶認證文件:
使用httpd -t檢查配置,如無報錯後啟動服務:
測試認證訪問:
我這邊用windows測試,本地Ip為192.168.0.38,修改保存C:\Windows\System32\drivers\etc\hosts文件:
然後測試訪問:
查看相應的日誌文件:
相關日誌log均能正常記錄訪問。
首先創建CA伺服器,用於簽發證書:
隨後生成簽發伺服器證書:
之後編輯/etc/httpd/conf.d/ssl.conf文件:
編輯/etc/httpd/conf.d/vhost.conf文件:
重啟httpd服務,後測試訪問:
此時訪問 http://www2.stuX.com 頁面,不會跳轉到https頁面訪問:
首先確認配置文件是否載入了mod_rewrite,httpd-2.4 mole配置文件在/etc/httpd/conf.moles.d/00-base.conf中:
隨後編輯www2的虛擬主機配置:
保存後重啟httpd服務,訪問相應的頁面測試:
此時訪問 www2.stuX.com 的其他路徑不會跳轉到https訪問頁面,如index.html。
Rewrite的模塊使用比較復雜,此處我也是剛接觸有興趣的同學可以參考下面的鏈接進行學習:
配置https服務: https://blog.csdn.net/wlzx120/article/details/52597338
配置https強制跳轉: https://www.centos.bz/2018/01/apache-%E5%BC%BA%E5%88%B6-http-%E5%85%A8%E9%83%A8%E8%B7%B3%E8%BD%AC%E5%88%B0-https/
Rewrite模塊: http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
Rewrite模塊中文手冊: http://man.chinaunix.net/newsoft/Apache2.2_chinese_manual/mod/mod_rewrite.html#rewriterule
RewriteRule和RewriteCond規則參數的詳細介紹: https://blog.csdn.net/lijunwyf/article/details/54948463
6. Linux高級篇之自定義日誌服務
在/etc/rsyslog.conf 中添加一個日誌文件 /var/log/hsp.log ,當有事件發送時(比如SSHD服務相關事件)、該文件接收到信息並保存。演示 重啟、登錄的情況、看看是否有日誌保存
1、編輯日誌記錄文件位置
2、增加自定義的日誌
3、自定義日誌查詢
7. 如何利用log4Net自定義屬性配置功能記錄完整的日誌信息
如何利用log4Net自定義屬性配置功能記錄完整的日誌信息
log4Net作為專業的log記錄控制項,對於它的強大功能大家一定不陌生。下面我將詳細介紹如何利用其自定義屬性,讓日誌信息更完整。
一,創建測試工程,log4Net組件可以自己從網上下載,也可通過Nuget進行安裝。
二,創建日誌模型及資料庫表,因為我們的日誌信息可以輸出為文本,也可以輸出到資料庫。
三,添加MyLayout,MyPatternConverter類擴展PatternLayout。
四,添加Log4Net.config文件,進行輸入方式定義。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.,log4net"/>
</configSections>
<log4net>
<!-- ConversionPattern 解釋
%m(message):輸出的日誌消息,如ILog.Debug(…)輸出的一條消息
%n(new line):換行
%d(datetime):輸出當前語句運行的時刻
%r(run time):輸出程序從運行到執行到當前語句時消耗的毫秒數
%t(thread id):當前語句所在的線程ID
%p(priority): 日誌的當前優先順序別,即DEBUG、INFO、WARN…等
%c(class):當前日誌對象的名稱
%L:輸出語句所在的行號
%F:輸出語句所在的文件名
%-數字:表示該項的最小長度,如果不夠,則用空格填充
-->
<!--定義輸出到控制台命令行中-->
<logger name="myLogger">
<level value="ALL"/>
<appender-ref ref="ConsoleAppender" />
</logger>
<!--定義輸出到控制台命令行中-->
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="Log4NetTest.MyLayout">
<param name="ConversionPattern" value="日誌時間:%d %n日誌級別:%-5p %n用 戶 ID:%Property{UserID} %n用戶姓名:%Property{UserName} %n日誌信息:%Property{Message} %n異常信息:%exception %n%n" />
</layout>
</appender>
<!--定義輸出到windows事件中-->
<appender name="WindowsAppender" type="log4net.Appender.EventLogAppender">
<layout type="Log4NetTest.MyLayout">
<param name="ConversionPattern" value="日誌時間:%d %n日誌級別:%-5p %n用 戶 ID:%Property{UserID} %n用戶姓名:%Property{UserName} %n日誌信息:%Property{Message} %n異常信息:%exception %n%n" />
</layout>
</appender>
<!--定義輸出到文件中-->
<appender name="TextAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="RollingStyle" value="Date" />
<layout type="Log4NetTest.MyLayout">
<param name="ConversionPattern" value="日誌時間:%d %n日誌級別:%-5p %n用 戶 ID:%Property{UserID} %n用戶姓名:%Property{UserName} %n日誌信息:%Property{Message} %n異常信息:%exception %n%n" />
</layout>
</appender>
<!--定義輸出到資料庫-->
<appender name="DataBaseAppender" type="log4net.Appender.AdoNetAppender">
<!--日誌緩存寫入條數-->
<bufferSize value="1" />
<!--日誌資料庫連接串-->
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="data source=.\SQL2008;initial catalog=Demo;integrated security=false;persist security info=True;User ID=sa;Password=1qaz" />
<!--日誌資料庫腳本-->
<commandText value="INSERT INTO LogInfo ([LogDate],[LogLevel],[UserId],[UserName],[Message],[Exception]) VALUES (@LogDate, @LogLevel,@UserId,@UserName, @Message, @Exception)" />
<!--日誌時間LogDate -->
<parameter>
<parameterName value="@LogDate" />
<dbType value="String" />
<size value="30" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{yyyy-MM-dd HH:mm:ss}" />
</layout>
</parameter>
<!--日誌類型LogLevel -->
<parameter>
<parameterName value="@LogLevel" />
<dbType value="String" />
<size value="10" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<!--自定義UserId -->
<parameter>
<parameterName value="@UserId" />
<dbType value="String" />
<size value="20" />
<layout type="Log4NetTest.MyLayout">
<conversionPattern value="%Property{UserID}" />
</layout>
</parameter>
<!--自定義UserName -->
<parameter>
<parameterName value="@UserName" />
<dbType value="String" />
<size value="50" />
<layout type="Log4NetTest.MyLayout">
<conversionPattern value="%Property{UserName}" />
</layout>
</parameter>
<!--自定義Message -->
<parameter>
<parameterName value="@Message" />
<dbType value="String" />
<size value="200" />
<layout type="Log4NetTest.MyLayout">
<conversionPattern value="%Property{Message}" />
</layout>
</parameter>
<!--異常信息Exception -->
<parameter>
<parameterName value="@Exception" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
</log4net>
</configuration>
五,添加LogHelper.cs類進行各自信息的寫入操作。
using System;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
using log4net;
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace Log4NetTest
{
public class LogHelper
{
/// <summary>
/// LoggerName
/// </summary>
public static string LoggerName = string.Empty;
/// <summary>
/// 用戶ID
/// </summary>
public static string UserID = string.Empty;
/// <summary>
/// 用戶名稱
/// </summary>
public static string UserName = string.Empty;
private static ILog iLog;
private static LogEntity logEntity;
/// <summary>
/// 介面
/// </summary>
private static ILog log
{
get
{
string path = Application.StartupPath + @"\Log4Net.config";
log4net.Config.XmlConfigurator.Configure(new FileInfo(path));
if (iLog == null)
{
iLog = log4net.LogManager.GetLogger(LoggerName);
}
else
{
if (iLog.Logger.Name != LoggerName)
{
iLog = log4net.LogManager.GetLogger(LoggerName);
}
}
return iLog;
}
}
/// <summary>
/// 構造消息實體
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
private static LogEntity BuildMessageMode(string message)
{
if (logEntity == null)
{
logEntity = new LogEntity();
logEntity.UserID = UserID;
logEntity.UserName = UserName;
logEntity.Message = message;
}
else
logEntity.Message = message;
return logEntity;
}
/// <summary>
/// 調試
/// </summary>
/// <param name="message">消息</param>
public static void Debug(string message)
{
if (log.IsDebugEnabled)
log.Debug(BuildMessageMode(message));
}
/// <summary>
/// 調試
/// </summary>
/// <param name="message">消息</param>
/// <param name="exception">異常</param>
public static void Debug(string message, Exception ex)
{
if (log.IsDebugEnabled)
log.Debug(BuildMessageMode(message), ex);
}
/// <summary>
/// 信息
/// </summary>
/// <param name="message">消息</param>
public static void Info(string message)
{
if (log.IsInfoEnabled)
log.Info(BuildMessageMode(message));
}
/// <summary>
/// 信息
/// </summary>
/// <param name="message">消息</param>
/// <param name="exception">異常</param>
public static void Info(string message, Exception ex)
{
if (log.IsInfoEnabled)
log.Info(BuildMessageMode(message), ex);
}
/// <summary>
/// 一般錯誤
/// </summary>
/// <param name="message">消息</param>
public static void Error(string message)
{
if (log.IsErrorEnabled)
log.Error(BuildMessageMode(message));
}
/// <summary>
/// 一般錯誤
/// </summary>
/// <param name="message">消息</param>
/// <param name="exception">異常</param>
public static void Error(string message, Exception exception)
{
if (log.IsErrorEnabled)
log.Error(BuildMessageMode(message), exception);
}
/// <summary>
/// 警告
/// </summary>
/// <param name="message">消息</param>
public static void Warn(string message)
{
if (log.IsWarnEnabled)
log.Warn(BuildMessageMode(message));
}
/// <summary>
/// 警告
/// </summary>
/// <param name="message">消息</param>
/// <param name="exception">異常</param>
public static void Warn(string message, Exception ex)
{
if (log.IsWarnEnabled)
log.Warn(BuildMessageMode(message), ex);
}
/// <summary>
/// 嚴重
/// </summary>
/// <param name="message">消息</param>
public static void Fatal(string message)
{
if (log.IsFatalEnabled)
log.Fatal(BuildMessageMode(message));
}
/// <summary>
/// 嚴重
/// </summary>
/// <param name="message">消息</param>
/// <param name="exception">異常</param>
public static void Fatal(string message, Exception ex)
{
if (log.IsFatalEnabled)
log.Fatal(BuildMessageMode(message), ex);
}
}
}
六,進行日誌效果測試,只要通過修改Log4Net.config,就可實現各種方式的輸入。
輸出到控制台:
<logger name="myLogger">
<level value="ALL"/>
<appender-ref ref="ConsoleAppender" />
</logger>
輸出到文件:
<logger name="myLogger">
<level value="ALL"/>
<appender-ref ref="TextAppender" />
</logger>
輸出到資料庫:
<logger name="myLogger">
<level value="ALL"/>
<appender-ref ref="DataBaseAppender" />
</logger>
8. 如何自定義IIS日誌欄位
首選如何設置iis日誌:(僅適用於伺服器 ,虛擬主機需要讓空間商給設置)1.打開Internet 信息服務 在指定站點上點擊滑鼠右鍵,選擇「屬性」。在網站「屬性」窗口, 「網站」標簽中在「啟用日誌記錄」前打勾,並在「活動日誌格式」中選擇「W3C擴展日誌文件格式」。
2.點擊「活動日誌格式」右側的「屬性」,設置「常規屬性」。在「新建日誌時間」選項選擇「每天」,在「文件命名和回卷使用當地時間」前打勾。3.點擊「活動日誌格式」右側的「屬性」,設置「擴展屬性」。在「擴展日誌記錄選項」里選擇如下選項,並點擊「確定」保存。
(1) 日期(date)
(2) 時間(time)
(3) 客戶端IP地址(c-ip)
(4) 用戶名(cs-username)
(5) 方法(cs-method)
(6) URI資源(cs-uri-stem)
(7) URI查詢(cs-uri-query)
(8) 協議狀態(sc-status)
(9) 發送的位元組數(sc-bytes)
(10) 協議版本(cs-version)
(11) 用戶代理(csUser-Agent)
(12) 引用站點(csReferer)
開頭四行都是日誌的說明信息
#Software 生成軟體
#Version 版本
#Date 日誌發生日期
#Fields 欄位,顯示記錄信息的格式,可由IIS自定義。
日誌的主體是一條一條的請求信息,請求信息的格式是由#Fields定義的,每個欄位都有空格隔開。