2009-03-06 15 views
15

यह मेरा log4net कॉन्फ़िग फ़ाइलआपके लॉग 4नेट कॉन्फ़िगरेशन में आपके पास क्या है? हैक्स, अनुकूलन, अवलोकन?

<?xml version="1.0" encoding="utf-8" ?> 
<log4net debug="true"> 
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > 
    <filter type="log4net.Filter.LevelRangeFilter"> 
     <acceptOnMatch value="true" /> 
     <levelMin value="DEBUG" /> 
     <levelMax value="FATAL" /> 
    </filter> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%-5p %5rms [%-17.17t] %-22.22c{1} %-18.18M - %m%n" /> 
    </layout> 
    </appender> 

    <appender name="SmtpAppender" type="MySmtpClientSmtpAppender"> 
    <to value="[email protected]" /> 
    <from value="[email protected]" /> 
    <subject value="Game Server Monitoring Failed!" /> 
    <smtpHost value="smtp.x.com" /> 
    <username value="admin" /> 
    <password value="x" /> 
    <bufferSize value="256" /> 
    <lossy value="true" /> 
    <evaluator type="log4net.spi.LevelEvaluator"> 
     <threshold value="ERROR" /> 
    </evaluator> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%-5p %d [ThreadId: %t] Class:%c{1} Method:%M %nMESSAGE:%n%m%n%n" /> 
    </layout> 
    </appender> 

    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="Logs\\wwwlog" /> 
    <appendToFile value="true" /> 
    <datePattern value="yyyyMMdd" /> 
    <maximumFileSize value="10MB" /> 
    <!--<rollingStyle value="Date" />--> 
    <filter type="log4net.Filter.LevelRangeFilter"> 
     <acceptOnMatch value="true" /> 
     <levelMin value="INFO" /> 
     <levelMax value="FATAL" /> 
    </filter> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> 
    </layout> 
    </appender> 


    <root> 
    <level value="DEBUG" /> 
    <appender-ref ref="ConsoleAppender" /> 
    <appender-ref ref="MySmtpAppender" /> 
    <appender-ref ref="RollingLogFileAppender" /> 
    </root> 
</log4net> 

मुझे याद आ रही कुछ भी है? स्पष्टता बनाए रखने के दौरान लॉग आकार घटाने के लिए कोई सुझाव/सलाह, बेहतर रूपांतरण पैटर्न? कोई दिलचस्प हैक्स?

संपादित करें: एक्सएमएल फ़ाइल को कोड ब्लॉक में नहीं मिला। अद्यतन। कोई सुझाव?

+0

हाइलाइट कोड, Ctrl + K बना सकता है। आपके एचटीएमएल ने इसे रोक दिया। –

उत्तर

11

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

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
+0

अच्छी कॉल। मैं इसका भी उपयोग करता हूं और ऐसा लगता है कि यह मेरे स्वयं के लॉग व्यूअर के साथ मदद करता है ताकि वह फ़ाइल को भी ब्राउज़ कर सके। –

+3

'FileAppender.MinimalLock' केवल तभी जरूरी है जब आप एकाधिक प्रक्रियाएं (नोट - प्रक्रियाएं, धागे नहीं हैं; log4net पहले से ही थ्रेड सुरक्षित है) उसी लॉग फ़ाइल को लिखें। अन्यथा यह चीजों को धीमा कर देता है: "लॉकिंग की यह विधि फ़ाइल एपेंडर.एक्सक्लूस लॉक से काफी धीमी है", http://logging.apache.org/log4net/release/sdk/log4net.Appender.FileAppender.MinimalLock.html –

+2

से मुझे चाहिए यह भी उल्लेख करें कि एक ही लॉग फ़ाइल में लिखने वाली कई प्रक्रियाएं आमतौर पर एक अच्छा विचार नहीं है। [एफएक्यू] (http://logging.apache.org/log4net/release/faq.html#single-file) से: "खुद से पूछें कि क्या आपको वास्तव में एक ही फाइल पर कई प्रक्रियाओं को लॉग करने की आवश्यकता है, तो नहीं कर दो ;-)"। आमतौर पर प्रत्येक प्रक्रिया को अपनी स्वयं की लॉग फ़ाइल लिखने के लिए एक बेहतर विचार है। –

2

यह लॉगऑन और लॉग 4नेट के समान होने पर निर्भर करता है, मुझे लगता है कि वे एक ही विनिर्देश पर आधारित हैं, लेकिन मुझे निश्चित रूप से पता नहीं है।

खैर मैं आपको बता सकता नहीं क्या मैं अपने log4net config में है, लेकिन मैं आपको बता सकता है क्या मैं अपने log4j config में है कि अगर काफी अच्छा है ...

<?xml version="1.0" encoding="UTF-8"?> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

    <!-- 
    <appender name="CHAINSAW_APPENDER" 
      class="org.apache.log4j.net.SocketAppender"> 
     <param name="RemoteHost" value="localhost" /> 
     <param name="Port" value="4445" /> 
     <param name="LocationInfo" value="true"/> 
     <param name="ReconnectionDelay" value="10000"/> 
    </appender> 
    --> 

    <appender name="FILE_APPENDER" 
     class="org.apache.log4j.RollingFileAppender"> 
     <param name="File" value="c:/dev/logs/OSB.log" /> 
     <param name="Append" value="true" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d [%t] %-5p [[[[%c]]]] (((%F:%L))) ___%C___ - %m%n"/> 
      </layout> 
    </appender> 

    <logger name="org.apache"> 
     <level value="WARN"/> 
    </logger> 

    <!-- 
    <logger name="com.conciliarpress.webapp.filter.GZIPFilte"> 
     <level value="WARN"/> 
    </logger> 

    <logger name="com.conciliarpress"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="BibleFormControllerTest"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="com.conciliarpress.webapp.action.sample.jmesa.JMesaSampleController"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="com.conciliarpress.webapp.action.binding"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="org.springframework.web.servlet.mvc"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="org.directwebremoting"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
     <level value="DEBUG"/> 
    </logger> 

    --> 

    <logger name="com.conciliarpress.dao.hibernate"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="com.conciliarpress.service.impl"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="com.conciliarpress.service.dwr"> 
     <level value="DEBUG"/> 
    </logger> 

    <logger name="com.conciliarpress.webapp.action"> 
     <level value="DEBUG" /> 
    </logger> 

    <root> 
     <level value="WARN" /> 
     <appender-ref ref="FILE_APPENDER"/> 
    </root> 

</log4j:configuration> 

इसके अलावा, मैं एक इसी है चेनसॉ विन्यास फाइल:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true"> 
    <plugin name="logFileReceiver" class="org.apache.log4j.varia.LogFilePatternReceiver"> 
    <param name="fileURL" value="file:///c:/dev/logs/OSB.log" /> 
    <param name="timestampFormat" value="yyyy-MM-d HH:mm:ss,SSS"/> 
    <param name="logFormat" value="TIMESTAMP [THREAD] LEVEL [[[[LOGGER]]]] (((FILE:LINE))) ___CLASS___ - MESSAGE"/> 
    <param name="name" value="DLA_M_LogFile" /> 
    <param name="tailing" value="true" /> 
    </plugin> 

    <root> 
     <level value="debug"/> 
    </root> 
</log4j:configuration> 

इसके अलावा यहां कुछ जानकारी है मदद मिल सकती है यदि आप बाद फ़ाइल decifer: http://wiki.apache.org/logging-log4j/Configuring_a_log4j_RollingFileAppender_with_Chainsaw

7

संदेश स्तर (डीबग, जानकारी, त्रुटि या घातक) के आधार पर कंसोल पर दिखाते समय अलग रंगों के साथ लॉगिंग के लिए। दूसरे appender एक फ़ाइल पर इसे सहेजने के लिए है:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 
    </configSections> 

<log4net debug="false"> 
    <appender name="trace" type="log4net.Appender.TraceAppender, log4net"> 
    <layout type="log4net.Layout.PatternLayout,log4net"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> 
    </layout> 
    </appender> 

<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender,log4net"> 
    <mapping> 
    <level value="ERROR" /> 
    <foreColor value="White" /> 
    <backColor value="Red" /> 
    </mapping> 
    <mapping> 
    <level value="DEBUG" /> 
    <foreColor value="White" /> 
    </mapping> 
    <mapping> 
    <level value="INFO" /> 
    <foreColor value="Green" /> 
    </mapping> 

    <layout type="log4net.Layout.PatternLayout"> 
    <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> 
    </layout> 
</appender> 

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender,log4net" > 
    <param name="File" value="Logs/NSCurrent.log" /> 
    <param name="AppendToFile" value="true" /> 
    <param name="RollingStyle" value="Date" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <datePattern value="yyyy-MM-dd" /> 
    <layout type="log4net.Layout.PatternLayout,log4net"> 
    <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> 
    </layout> 
</appender> 

    <root> 
    <priority value="DEBUG" /> 
    <appender-ref ref="RollingFile" /> 
    <appender-ref ref="ColoredConsoleAppender" /> 
    </root> 
</log4net> 
</configuration> 
4

मैं एक बहुत कम से कम log4net विन्यास चलाने के लिए और XML स्वरूप का उपयोग करना पसंद है, लेकिन एक बात मैं (वेब ​​एप्लिकेशन के लिए) जोड़ने एएसपी है सुझाव देना चाहेंगे। नेट ट्रेस एपेंडर।

<appender name="AspNetTraceAppender" type="log4net.Appender.AspNetTraceAppender" > 
    <layout type="log4net.Layout.PatternLayout" /> 
</appender> 
फिर अपने जड़ लकड़हारा पर नीचे

, या जहाँ भी आप यह सक्रिय करने का निर्णय:

<root> 
    <level value="WARN" /> 
    <appender-ref ref="XmlSchemaFileAppender" /> 
    <appender-ref ref="AspNetTraceAppender" /> 
</root> 

इससे मुझे अपने उचित डिबग डेटा के सभी पर एक साथ पाने के लिए अनुमति देता है आप बस निम्नलिखित जोड़ने के लिए एक पृष्ठ जब मैं कुछ मिनट एएसपी.NET विवरण डीबग कर रहा हूं। अधिकांश समय में मेरे पास एएसपी.नेट ट्रेस एपेंडर ने इसे अक्षम करने के लिए टिप्पणी की है, लेकिन कुछ मामलों में वास्तव में मदद की है, खासकर जब आप यह पता लगाने की कोशिश कर रहे हैं कि कौन सी विशेष सर्वर पोस्ट बैक विधि आपके ऐप में हैंगअप का कारण बन रही है ।

26

कोई भी एन्कोडिंग का उल्लेख नहीं किया गया। यह बहुत महत्वपूर्ण है अगर आप चीनी, जापानी, अरबी या किसी भी डबल-बाइट भाषा में संदेश लॉग कर रहे हैं। यहाँ एक उदाहरण है:

यहाँ

प्रारूप मैं का उपयोग कर रहा है:

<layout type="log4net.Layout.PatternLayout,log4net"> 
    <!-- a reduced format, saves bit of log space: --> 
    <param name="ConversionPattern" value="%date{MM/dd HH:mm:ss,fff}-{%level}-%message%newline"/> 
    </layout> 

से पहले:

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
    <encoding value="utf-8" /> 
    <!-- etc. --> 
</appender> 
+14

बहुत उपयोगी टिप्पणी। मेरी इच्छा है कि यह डिफ़ॉल्ट था। हालांकि, मान = "utf-8" का उपयोग करते समय, फ़ाइल में खाली होने पर भी सभी फ़ाइलों में बीओएम होगा। सामान्य लॉगिंग के लिए, आमतौर पर हमेशा सामग्री होती है, इसलिए यह कोई मुद्दा नहीं है। हालांकि, यह त्रुटि और चेतावनी लॉग के लिए अवांछनीय है - जो आदर्श रूप से खाली होना चाहिए - लेकिन अभी भी बीओएम के कारण आकार में 1 केबी के रूप में दिखाया जाएगा, इसलिए आपको वहां वास्तव में कोई त्रुटि होने पर इसे जांचना होगा। इसके आस-पास एक कार्य <एन्कोडिंग प्रकार = "System.Text.UTF8Encoding" /> का उपयोग करना है। यह अनियंत्रित बीओएम को छोड़ देगा, इसलिए खाली लॉग 0 केबी के रूप में दिखाई देगा। – Dono

+0

अच्छी टिप - धन्यवाद। – nakhli

5

लॉग फ़ाइल आकार को कम करने के लिए, आपको ConversionPattern को एडजस्ट करने की कोशिश कर सकते -06-05 10: 58: 40,819 [1] जानकारी मेरा ऐप [(शून्य)] - मेरा ऐप - === स्टार टिंग ....

के बाद:

05/06 11: 17: 29,151- {जानकारी} -मेरे अनुप्रयोग - === शुरू करने ...

ध्यान दें: अपाचे से प्रलेखन log4net के लिए गलत हो रहा है - यह रूप में , मिलीसेकंड के लिए एसएसएस उपयोग करने के लिए कहते हैं log4net FFF

प्रति पंक्ति एक छोटा सा की बचत का उपयोग करता है, जबकि एक बड़ा अंतर समग्र :)

+1

दरअसल, एफएफ यह है! – alterfox

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