1、下载、安装EnterpriseLibraryJune2005.exe
2、建立c#工程 LoggingFrankTest
3、添加项目 E:\Program Files\Microsoft Enterprise Library\Src\Logging\ 这是我机器上的位置
4、E:\Program Files\Microsoft Enterprise Library\Src\Configuration\
5、E:\Program Files\Microsoft Enterprise Library\Src\Common\
6、在主项目中添加E:\Program Files\Microsoft Enterprise Library\Src\Logging的引用
7、建立app.config
<configuration>
<configSections>
<section name="enterpriselibrary.configurationSettings" type="Microsoft.Practices.EnterpriseLibrary.Configuration.ConfigurationManagerSectionHandler, Microsoft.Practices.EnterpriseLibrary.Configuration, Version=1.0.0.0, Culture=neutral" />
</configSections>
<enterpriselibrary.configurationSettings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" applicationName="loggingFrankTest" xmlns="http://www.microsoft.com/practices/enterpriselibrary/08-31-2004/configuration">
<configurationSections>
<configurationSection name="loggingConfiguration" encrypt="false">
<storageProvider xsi:type="XmlFileStorageProviderData" name="XML File Storage Provider" path="loggingConfiguration.config" />
<dataTransformer xsi:type="XmlSerializerTransformerData" name="Xml Serializer Transformer">
<includeTypes />
</dataTransformer>
</configurationSection>
<configurationSection name="loggingDistributorConfiguration" encrypt="false">
<storageProvider xsi:type="XmlFileStorageProviderData" name="XML File Storage Provider" path="loggingDistributorConfiguration.config" />
<dataTransformer xsi:type="XmlSerializerTransformerData" name="Xml Serializer Transformer">
<includeTypes />
</dataTransformer>
</configurationSection>
</configurationSections>
<keyAlgorithmStorageProvider xsi:nil="true" />
<includeTypes />
</enterpriselibrary.configurationSettings>
</configuration>8、建立loggingConfiguration.config
<?xml version="1.0" encoding="utf-8"?>
<loggingConfiguration>
<xmlSerializerSection type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<enterpriseLibrary.loggingSettings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" loggingEnabled="true" tracingEnabled="true" categoryFilterMode="AllowAllExceptDenied" distributionStrategy="In Process" minimumPriority="0" name="Client Settings" xmlns="http://www.microsoft.com/practices/enterpriselibrary/08-31-2004/logging">
<categoryFilters />
<distributionStrategies>
<distributionStrategy xsi:type="InProcDistributionStrategyData" name="In Process" />
</distributionStrategies>
</enterpriseLibrary.loggingSettings>
</xmlSerializerSection>
</loggingConfiguration>9、建立loggingDistributorConfiguration.config
<?xml version="1.0" encoding="utf-8"?>
<loggingDistributorConfiguration>
<xmlSerializerSection type="Microsoft.Practices.EnterpriseLibrary.Logging.Distributor.Configuration.DistributorSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<enterpriseLibrary.loggingDistributorSettings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" defaultCategory="General" defaultFormatter="Text Formatter" xmlns="http://www.microsoft.com/practices/enterpriselibrary/08-31-2004/loggingdistributor">
<sinks>
<sink xsi:type="FlatFileSinkData" name="Flat File Sink" fileName="trace.log" header="----------------------------------------" footer="----------------------------------------" />
</sinks>
<categories>
<category name="Debug">
<destinations>
<destination name="File File Destination" sink="Flat File Sink" format="Text Formatter" />
</destinations>
</category>
</categories>
<formatters>
<formatter xsi:type="TextFormatterData" name="Text Formatter">
<template><![CDATA[Timestamp: {timestamp}
Message: {message}
Category: {category}
Priority: {priority}
EventId: {eventid}
Severity: {severity}
Title:{title}
Machine: {machine}
Application Domain: {appDomain}
Process Id: {processId}
Process Name: {processName}
Win32 Thread Id: {win32ThreadId}
Thread Name: {threadName}
Extended Properties: {dictionary({key} - {value}
)}]]></template>
</formatter>
</formatters>
</enterpriseLibrary.loggingDistributorSettings>
</xmlSerializerSection>
</loggingDistributorConfiguration>10、在form1.cs上放一个Button
private void button1_Click(object sender, System.EventArgs e)
{
Logger.Write("anything to log.","Debug");
}11、编辑工程属性:通用属性->生成事件->生成后的命令行
copy "$(ProjectDir)loggingConfiguration.config" "$(TargetDir)" > nul
copy "$(ProjectDir)loggingDistributorConfiguration.config" "$(TargetDir)" > nul12、执行程序
当前目录下会建立 trace.log文件,内容如下
----------------------------------------
Timestamp: 2005-8-2 14:58:54
Message: anything to log.
Category: Debug
Priority: 0
EventId: 1
Severity: Unspecified
Title:
Machine: LITAO
Application Domain: LoggingFrankTest.exe
Process Id: 3332
Process Name: F:\dotNet\LoggingFrankTest\bin\Debug\LoggingFrankTest.exe
Win32 Thread Id: 200
Thread Name:
Extended Properties:
----------------------------------------
主要的扩展点:
1、
<sinks>
<sink xsi:type="FlatFileSinkData" name="Flat File Sink" fileName="trace.log" header="----------------------------------------" footer="----------------------------------------" />
</sinks> 可以配置更多的sink,比如MailSink,EventLogSink 等等
也可以通过继承LogSink或实现ILogSink编写自己的sink;
例如:
<sinks>
<sink xsi:type="FlatFileSinkData" name="Flat File Sink" fileName="trace.log" header="----------------------------------------" footer="----------------------------------------" />
<sink xsi:type="EventLogSinkData" name="Event Log Sink" eventLogName="MyLogging" eventSourceName="MyApplication" />
</sinks> 2、
<category name="Debug">
<destinations>
<destination name="File File Destination" sink="Flat File Sink" format="Text Formatter" />
</destinations> </category>
可以配置更多的category,这样Logger.Write("anything to log.","Debug");就可以更细致的分类
比如Logger.Write("anything to log.","Info");要配置 <category name="Info">。。。</category>
3、<destination name="File File Destination" sink="Flat File Sink" format="Text Formatter" />
<destinations>可以包含多个destination,这样就可以对一类日志以不同的方式进行记录.
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=492180