2013-01-08 12 views
6

मैं System.Net.Mail.Attachment का उपयोग कर एक ईमेल संलग्नक के रूप में वर्तमान log4net लॉग भेजना चाहते थे लेकिन जब मैं फ़ाइल पथ में पारित एक IOException फेंक दिया है।एक System.Net.Mail.Attachment के रूप में एक log4net लॉग ईमेल फेंकता IOException (लॉक प्रक्रिया)

Attachment mailAttachment = new Attachment(logPath); 

प्रक्रिया फ़ाइल 'C: \ लॉग \ log4net.log' उपयोग नहीं कर सकते क्योंकि यह अन्य प्रक्रिया द्वारा किया जा रहा है

appender विन्यास इस तरह दिखता है:

<appender name="RootRollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <param name="File" value="C:\Log\log4net.log" /> 
    <param name="AppendToFile" value="true" /> 
    <param name="MaxSizeRollBackups" value="10" /> 
    <param name="MaximumFileSize" value="10024KB" /> 
    <param name="RollingStyle" value="Size" /> 
    <param name="StaticLogFileName" value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%date [%username|%thread] %-5level %logger: %message%newline" /> 
    </layout> 
</appender> 

क्या इसके आसपास जाने का कोई तरीका है? क्या मैं लॉग फ़ाइल कॉपी कर सकता हूं या किसी भी तरह इसे लॉकिंग प्रक्रिया से मुक्त कर सकता हूं?

+1

.config फ़ाइल में आप किस प्रकार का एपेंडर उपयोग कर रहे हैं, क्या आप पोस्ट कर सकते हैं कि यह अनुभाग स्टार्टर्स '' – MethodMan

उत्तर

15
<appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <file value="${TMP}\log-file.txt" /> 
    <appendToFile value="true" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
</appender> 

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> का उपयोग कर log4net बता जबकि यह वास्तविक लेखन कर रही है केवल एक संक्षिप्त पल के लिए फ़ाइल लॉक करने के लिए होगा। थोड़ा सा प्रदर्शन जुर्माना है, लेकिन आपको चीजों को करने की इजाजत देता है जैसे इसे एक अटैचमेंट के रूप में जोड़ना बहुत आसान है।

अन्यथा प्रक्रिया चलने के दौरान log4net फ़ाइल को अनिश्चित रूप से लॉक कर देगा।

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