2011-08-22 46 views

回答

1
<configSections> 
    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" /> 
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" /> 
    </configSections> 
    <!--Flat File Trace Listener--> 

    <loggingConfiguration name="Logging Application Block" tracingEnabled="true" defaultCategory="Default Category" logWarningsWhenNoCategoriesMatch="true"> 
    <listeners> 
     <add source="Enterprise Library Logging" formatter="Text Formatter" 
     log="Application" machineName="" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     traceOutputOptions="None" filter="All" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     name="Formatted EventLog TraceListener" /> 
     <add fileName="D:\Works\GPIH\GPIAgent\Web\Log\Logger.log" 
     formatter="One Line Formatter" rollFileExistsBehavior="Increment" 
     rollInterval="Midnight" rollSizeKB="10000" timeStampPattern="yyyy-MM-dd" 
     listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     traceOutputOptions="None" filter="All" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     name="Rolling Flat File" /> 
    </listeners> 
    <formatters> 

     <add template="Timestamp: {timestamp}{newline}&#xA;Message: {message}{newline}&#xA;Category: {category}{newline}&#xA;Machine: {localMachine}{newline}&#xA;App Domain: {localAppDomain}{newline}" 
     type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     name="Text Formatter" /> 
     <add template="{timestamp(local)} Cat: {category} Pri: {priority} EId: {eventid} Sev: {severity} {message} 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} 

)}" 
     type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     name="One Line Formatter" /> 
    </formatters> 
    <logFilters> 
     <add name="LogEnabled Filter" 
     type="Microsoft.Practices.EnterpriseLibrary.Logging.Filters.LogEnabledFilter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     enabled="true" /> 
    </logFilters> 
    <categorySources> 
     <add switchValue="Warning" name="Default Category"> 
     <listeners> 
      <add name="Formatted EventLog TraceListener" /> 
     </listeners> 
     </add> 
    </categorySources> 
    <specialSources> 
     <allEvents switchValue="All" name="All Events"> 
     <listeners> 
      <add name="Rolling Flat File" /> 
     </listeners> 
     </allEvents> 
     <errors switchValue="All" name="Logging Errors &amp; Warnings"> 
     <listeners> 
      <add name="Formatted EventLog TraceListener" /> 
     </listeners> 
     </errors> 
    </specialSources> 
    </loggingConfiguration> 
1

是的,但不适用于随Enterprise-Library一起提供的TraceListener。你需要的是一个自定义TraceListener或至少TraceListenerData,它被间接用作一个跟踪监听器工厂(GetCreationExpression)。

您所描述的简单方法是从RollingFlatFileTraceListenerData继承并取代GetCreationExpression。它有这个.FileName保护字段可以设置为任何你想要的。例如,你可以解决您的自定义标记(时间戳)

/// <summary> 
    /// Returns a lambda expression that represents the creation of the trace listener described by this 
    /// configuration object. 
    /// </summary> 
    /// <returns>A lambda expression to create a trace listener.</returns> 
    protected override Expression<Func<TraceListener>> GetCreationExpression() 
    { 
     // Resolve tokens in FileName 
     string fileName = ResolveTokens(this.FileName); 

     return 
      () => 
       new RollingFlatFileTraceListener(
        fileName, 
        this.Header, 
        this.Footer, 
        Container.ResolvedIfNotNull<ILogFormatter>(this.Formatter), 
        this.RollSizeKB, 
        this.TimeStampPattern, 
        this.RollFileExistsBehavior, 
        this.RollInterval, 
        this.MaxArchivedFiles); 
    } 

,并且配置:

<add name="All Activities Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
listenerDataType="Sample.CustomFlatFileTraceListenerData, Sample" 
fileName="%TEMP%\{timestamp}.log" 
footer="" formatter="Detail Text Formatter" rollFileExistsBehavior="Overwrite" 
rollInterval="Day" timeStampPattern="yyyy-MM-dd" maxArchivedFiles="10" /> 
+0

谢谢,但没有他,P :( –