如何利用log4Net自定義屬性配置功能記錄完整的日志信息 如何利用log4Net自定義屬性配置功能記錄完整的日志信息
一,創(chuàng)建測(cè)試工程,log4Net組件可以自己從網(wǎng)上下載,也可通過Nuget進(jìn)行安裝。
萬(wàn)根網(wǎng)絡(luò)大帶寬云主機(jī)!
【點(diǎn)擊進(jìn)入】
10TB海量帶寬儲(chǔ)備! 100多個(gè)IDC節(jié)點(diǎn)任你選!
查 看
二,創(chuàng)建日志模型及數(shù)據(jù)庫(kù)表,因?yàn)槲覀兊娜罩拘畔⒖梢暂敵鰹槲谋荆部梢暂敵龅綌?shù)據(jù)庫(kù)。
萬(wàn)根網(wǎng)絡(luò)大帶寬云主機(jī)!
【點(diǎn)擊進(jìn)入】
10TB海量帶寬儲(chǔ)備! 100多個(gè)IDC節(jié)點(diǎn)任你選!
查 看
育知同創(chuàng)教育—學(xué)安卓混合開發(fā)
【點(diǎn)擊進(jìn)入】
育知專注安卓混合開發(fā)培訓(xùn),零基礎(chǔ),簽協(xié)議, 保月薪10000,免費(fèi)試聽一個(gè)月,不滿意不繳費(fèi)
查 看
三,添加MyLayout,MyPatternConverter類擴(kuò)展PatternLayout。
育知同創(chuàng)教育—學(xué)安卓混合開發(fā)
【點(diǎn)擊進(jìn)入】
育知專注安卓混合開發(fā)培訓(xùn),零基礎(chǔ),簽協(xié)議, 保月薪10000,免費(fèi)試聽一個(gè)月,不滿意不繳費(fèi)
查 看
四,添加Log4Net.config文件,進(jìn)行輸入方式定義。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<log4net>
<!-- ConversionPattern 解釋
%m(message):輸出的日志消息,如ILog.Debug(…)輸出的一條消息
%n(new line):換行
%d(datetime):輸出當(dāng)前語(yǔ)句運(yùn)行的時(shí)刻
%r(run time):輸出程序從運(yùn)行到執(zhí)行到當(dāng)前語(yǔ)句時(shí)消耗的毫秒數(shù)
%t(thread id):當(dāng)前語(yǔ)句所在的線程ID
%p(priority): 日志的當(dāng)前優(yōu)先級(jí)別,即DEBUG、INFO、WARN…等
%c(class):當(dāng)前日志對(duì)象的名稱
%L:輸出語(yǔ)句所在的行號(hào)
%F:輸出語(yǔ)句所在的文件名
%-數(shù)字:表示該項(xiàng)的最小長(zhǎng)度,如果不夠,科技網(wǎng),則用空格填充
-->
<!--定義輸出到控制臺(tái)命令行中-->
<logger>
<level value="ALL"/>
<appender-ref ref="ConsoleAppender" />
</logger>
<!--定義輸出到控制臺(tái)命令行中-->
<appender type="log4net.Appender.ConsoleAppender">
<layout type="Log4NetTest.MyLayout">
<param value="日志時(shí)間:%d %n日志級(jí)別:%-5p %n用 戶 ID:%Property{UserID} %n用戶姓名:%Property{UserName} %n日志信息:%Property{Message} %n異常信息:%exception %n%n" />
</layout>
</appender>
<!--定義輸出到windows事件中-->
<appender type="log4net.Appender.EventLogAppender">
<layout type="Log4NetTest.MyLayout">
<param value="日志時(shí)間:%d %n日志級(jí)別:%-5p %n用 戶 ID:%Property{UserID} %n用戶姓名:%Property{UserName} %n日志信息:%Property{Message} %n異常信息:%exception %n%n" />
</layout>
</appender>
<!--定義輸出到文件中-->
<appender type="log4net.Appender.RollingFileAppender">
<param value="Log\\" />
<param value="true" />
<param value="10240" />
<param value="100" />
<param value="false" />
<param value="yyyyMMdd" />
<param value="Date" />
<layout type="Log4NetTest.MyLayout">
<param value="日志時(shí)間:%d %n日志級(jí)別:%-5p %n用 戶 ID:%Property{UserID} %n用戶姓名:%Property{UserName} %n日志信息:%Property{Message} %n異常信息:%exception %n%n" />
</layout>
</appender>
<!--定義輸出到數(shù)據(jù)庫(kù)-->
<appender type="log4net.Appender.AdoNetAppender">
<!--日志緩存寫入條數(shù)-->
<bufferSize value="1" />
<!--日志數(shù)據(jù)庫(kù)連接串-->
<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" />
<!--日志數(shù)據(jù)庫(kù)腳本-->
<commandText value="INSERT INTO LogInfo ([LogDate],[LogLevel],[UserId],[UserName],[Message],[Exception]) VALUES (@LogDate, @LogLevel,@UserId,@UserName, @Message, @Exception)" />
<!--日志時(shí)間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類進(jìn)行各自信息的寫入操作。
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;
}
}
如何利用log4Net自定義屬性配置功能記錄完整的日志信息
<layout type="Log4NetTest.MyLayout"> <\/layout> <\/appender> <!--定義輸出到數(shù)據(jù)庫(kù)--> <appender name="DataBaseAppender" type="log4net.Appender.AdoNetAppender"> <!--日志緩存寫入條數(shù)--> <bufferSize value="1" \/> <!--日志數(shù)據(jù)庫(kù)連接串--> <connectionType value="System.Data.Sq...
如何使用Log4net創(chuàng)建日志及簡(jiǎn)單擴(kuò)展
所以要定義一個(gè)OrangeRender類實(shí)現(xiàn)log4net.ObjectRender.IObjectRender接口,然后注冊(cè)它(我們?cè)诒疚闹械臄U(kuò)展不使用這種方法,而是直接實(shí)現(xiàn)一個(gè)自定義的Layout)。這時(shí)logger就會(huì)知道如何把Orange記錄到日志中了。3.6 RepositoryRepository主要用于日志對(duì)象組織結(jié)構(gòu)的維護(hù)。 本回答由提問者推薦 已贊過 已踩過< 你對(duì)這個(gè)回答的...
如何利用log4Net自定義屬性配置功能記錄完整的日志信息
<layout type="Log4NetTest.MyLayout"> <\/layout> <\/appender> <!--定義輸出到文件中--> <appender type="log4net.Appender.RollingFileAppender"> <layout type="Log4NetTest.MyLayout">
相關(guān)評(píng)說:
宣恩縣齒輪: ______ 1.設(shè)置<property name="show_sql">true</property> 2.設(shè)置NHibernate所支持的查詢都將存儲(chǔ)到log.txt文件中. <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config...
宣恩縣齒輪: ______ 第一步, 當(dāng)然是添加log4net.dll的引用啦,我這里提供一個(gè)log4net的dll文件 第二步,[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)] 這句話的意思是log4net會(huì)自動(dòng)尋找配置文件App.config或Web.config...
宣恩縣齒輪: ______ <logger name="debug"> <appender-ref ref="ConsoleAppender"/> </logger> </log4net> 2, AssemblyInfo.cs中添加 [html] view plain copy [assembly: log4net.Config.DOMConfigurator(ConfigFileExtension = "config", Watch = true)] 3,定義...
宣恩縣齒輪: ______ 自定義一個(gè)log4net的append, 然后在里面區(qū)分log的lever, 然后日志把信息存入不同的表中
宣恩縣齒輪: ______ <log4net> <!-- <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">2. 日志文件名開頭3. <file value="logfile" />4. 是否追加到文件5. <appendToFile value="true" />6. 混合使用...
宣恩縣齒輪: ______ 您好,很高興為您解答.檢查配置,文件操作權(quán)限 如若滿意,請(qǐng)點(diǎn)擊右側(cè)【采納答案】,如若還有問題,請(qǐng)點(diǎn)擊【追問】 希望我的回答對(duì)您有所幫助,望采納! ~ O(∩_∩)O~
宣恩縣齒輪: ______ 使用屬性可以在設(shè)計(jì)時(shí)對(duì)類、properties和方法添加說明,然后在運(yùn)行時(shí)通過反射資訊來(lái)檢查它們.本文為我們介紹了在開發(fā)應(yīng)用時(shí)如何利用C#自定義屬性. 本文可以從技術(shù)文章下載出獲得,其中包含了一個(gè)使用定制屬性的Visual Studio專案示...
宣恩縣齒輪: ______ 在AssemblyInfo.cs中的庫(kù): [總成:log4net.Config.XmlConfigurator(表= TRUE)] 意思是:讓從application's配置 假設(shè)有一個(gè)參照上述應(yīng)用程序TestApp的庫(kù)中,然后,根據(jù)上述變化,log4net的從TestApp.config文件進(jìn)行配置.通過這種方式,你可以將原始庫(kù)的app.config的內(nèi)容TestApp的項(xiàng)目(后TestApp的項(xiàng)目編譯TestApp.config自動(dòng)生成)來(lái)app.confg. 希望對(duì)您有所幫助!
宣恩縣齒輪: ______ 在我們實(shí)際建模中,我們一般會(huì)自定義零件的屬性,如材料,作者,零件號(hào)等,以便連接到工程圖及數(shù)據(jù)管理.一般我們會(huì)在文件屬性一一輸入對(duì)應(yīng)的文本數(shù)值.如果輸入的內(nèi)容很多的時(shí)候,就比較繁瑣.下面介紹利用屬性編輯程序零件,自定...
宣恩縣齒輪: ______ 在服務(wù)器的入口類中的setup方法中加入這么一段,用來(lái)生成log類.所謂入口類,就是繼承了ApplicationBase 的類.[html] view plain copy protected override void Setup() { LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance); ...