第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何以編程方式更改文件位置?

如何以編程方式更改文件位置?

C#
湖上湖 2019-10-28 09:54:34
我是Log4net的新手。我設(shè)法通過添加配置文件和簡單的日志記錄來解決問題。我已經(jīng)將值硬編碼為,"C:\temp\log.txt"但這還不夠好。日志必須轉(zhuǎn)到特殊文件夾path = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);并且此路徑會根據(jù)您使用的是Windows Server 2008,Windows XP還是Vista等而改變...如何僅以編程方式更改log4net中文件的位置?這是我所做的:<configSections><section name="log4net"         type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/></configSections><log4net>             <root>        <level value="DEBUG" />        <appender-ref ref="LogFileAppender" />    </root>    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">        <param name="File" value="C:\temp\log.txt" />        <param name="AppendToFile" value="true" />        <rollingStyle value="Size" />        <maxSizeRollBackups value="10" />        <maximumFileSize value="10MB" />        <staticLogFileName value="true" />        <layout type="log4net.Layout.PatternLayout">            <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />        </layout>    </appender></log4net>class Program{    protected static readonly ILog log = LogManager.GetLogger(typeof(Program));    static void Main(string[] args)    {        log4net.Config.XmlConfigurator.Configure();        log.Warn("Log something");        path = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);        // How can I change where I log stuff?    }}只需弄清楚如何更改才能將內(nèi)容記錄到我想要的位置。有什么建議么?非常感謝
查看完整描述

3 回答

?
弒天下

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊

log4net可以為您解決這個(gè)問題。在這種情況下,可以使用log4net.Util.PatternString選項(xiàng)處理程序格式化字符串類型的任何appender屬性。PatternString甚至支持SpecialFolder枚舉,該枚舉啟用以下優(yōu)雅的配置:


<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >

    <file type="log4net.Util.PatternString" 

        value="%envFolderPath{CommonApplicationData}\\test.txt" />

    ...

</appender>

這是證明布丁的單元測試:


[Test]

public void Load()

{

    XmlConfigurator.Configure();

    var fileAppender = LogManager.GetRepository()

        .GetAppenders().First(appender => appender is RollingFileAppender);


    var expectedFile = 

        Path.Combine(

            Environment.GetFolderPath(

                Environment.SpecialFolder.CommonApplicationData),

                "test.txt");


    Assert.That(fileAppender, 

        Is.Not.Null & Has.Property("File").EqualTo(expectedFile));

}

以下測試驗(yàn)證log4net實(shí)際上已寫入磁盤(這基本上使該測試成為“集成”測試,而不是單元測試,但我們暫時(shí)將其保留):


[Test]

public void Log4net_WritesToDisk()

{

    var expectedFile = 

        Path.Combine(

            Environment.GetFolderPath(

                Environment.SpecialFolder.CommonApplicationData),

                "test.txt");


    if (File.Exists(expectedFile))

        File.Delete(expectedFile);


    XmlConfigurator.Configure();


    var log = LogManager.GetLogger(typeof (ConfigTest));

    log.Info("Message from test");


    LogManager.Shutdown();


    Assert.That(File.ReadAllText(expectedFile), 

        Text.Contains("Message from test"));

}

注意:我強(qiáng)烈建議使用上面示例中演示的緊湊屬性語法。刪除所有這些“ <property name =”可以使您的配置更具可讀性。


查看完整回答
反對 回復(fù) 2019-10-28
  • 3 回答
  • 0 關(guān)注
  • 400 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號