2012-04-04 15 views
23

log4net 1.2.11.0 w/.NET का उपयोग करके, मैं रोलिंगफाइलएपेंडर को यूटीसी तिथियों को आउटपुट करने के लिए कैसे प्राप्त कर सकता हूं?लॉग 4नेट: यूटीसी टाइम्स के साथ लॉग इन करें

<dateTimeStrategy type="log4net.Appender.RollingFileAppender+UniversalDateTime" /> 

दुर्भाग्य से यह काम नहीं कर रहा:

अपाचे के अनुसार यह जितना आसान होना चाहिए।

मेरी log4net विन्यास की सम्पूर्णता है:

<log4net> 
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
     <file value="Log-.txt" /> 
     <rollingStyle value="Date" /> 
     <datePattern value="yyyyMMdd"/> 
     <PreserveLogFileNameExtension value="true" /> 
     <staticLogFileName value="false"/> 
     <appendToFile value="true" /> 
     <maxSizeRollBackups value="10" /> 
     <dateTimeStrategy type="log4net.Appender.RollingFileAppender+UniversalDateTime" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %-5level %logger - %message%newline" /> 
     </layout> 
    </appender> 
    <root> 
     <!-- Options are "ALL", "DEBUG", "INFO", "WARN", "ERROR", "FATAL" and "OFF". --> 
     <level value="DEBUG" /> 
     <appender-ref ref="RollingFile" /> 
    </root> 
    </log4net> 

एक decompiler का उपयोग करना मैं देख सकता हूँ log4net dll RollingFileAppender के अंदर एक निजी वर्ग के रूप में प्रकार 'UniversalDateTime' है।

उत्तर

28

% utcdate द्वारा% date को बदलें।

उदाहरण:

<conversionPattern value="%utcdate{ABSOLUTE} UTC %c{1} - %m%n" /> 

इस उदाहरण में, {} ABSOLUTE एक तिथि फॉर्मेट स्पेसिफायर है: अधिक जानकारी के लिए The Log4Net PatternLayout documentation देखते हैं।

मुझे संदेह है कि dateTimeStrategy तारीख के अनुसार रोलिंग करते समय किस मध्यरात्रि (स्थानीय या यूटीसी) का उपयोग करने के लिए और अधिक हो सकता है, लेकिन इस बारे में निश्चित नहीं है।

+1

यह वही है जो मैं यूटीसी तिथियों को मुद्रित करने के लिए देख रहा था। और मुझे लगता है कि आप फ़ाइल रोलओवर दिनांक के लिए डेटटाइमेटीजी के बारे में सही हैं। उस संपत्ति पर कोई दस्तावेज नहीं है, लेकिन जब आपने इसका उल्लेख किया है, तो यह सही लगता है। धन्यवाद। –

31

ध्यान रखें कि AdoNetAppender का उपयोग करते समय परिवर्तन बहुत अलग हैं। उस मामले में, आप पैरामीटर सेटिंग्स को बदलने की जरूरत:

<parameter> 
    <parameterName value="@log_date" /> 
    <dbType value="DateTime" /> 
    <layout type="log4net.Layout.RawUtcTimeStampLayout" /> 
    <!--<layout type="log4net.Layout.RawTimeStampLayout" />--> 
</parameter> 

यह परिवर्तन अब logDate क्षेत्र के लिए सही यूटीसी मूल्य लिखेंगे।

+2

धन्यवाद @ एडी डीगगेन, मुझे कॉपी/पेस्ट समाधान पसंद है! – Pingi

संबंधित मुद्दे