【问题标题】:Create a text file and write to it when bool is false创建一个文本文件并在 bool 为 false 时写入它
【发布时间】:2014-02-07 19:43:55
【问题描述】:

运行控制台应用程序。如果bool Usertrue,我想将文本输出到控制台应用程序。 如果bool Userfalse 我想创建一个文件并将文本输出到那里。

适用于true,并创建文本文件if false,但不向其中保存文本。

有什么想法吗?

if (!user)
{
    Console.SetOut(File.CreateText(@".\log" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".log"));
    OutputHeader();
}

Console.WriteLine("Arg count is " + args.Length.ToString());
Console.WriteLine("Show verbose output is = " + verbose.ToString());

【问题讨论】:

    标签: c# logging console console-application


    【解决方案1】:

    我建议您使用一些日志框架,例如 NLoglog4net(都可以从 NuGet 获得),它允许从配置文件更改日志输出。例如。对于NLog,您可以指定两个目标 - 一个用于具有日期模式名称的日志文件,第二个用于控制台输出:

    <targets>
      <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
              layout="${longdate} ${uppercase:${level}} ${message}" />
      <target xsi:type="Console" name="c" />
    </targets>
    

    然后你可以选择使用哪个目标

    <logger name="*" minlevel="Trace" writeTo="f" />
    

    【讨论】:

      【解决方案2】:

      尝试改用 WriteAllText。它简单易行。

      System.IO.File.WriteAllText(string filepath, string text); 
      

      希望对你有帮助

      【讨论】:

        【解决方案3】:

        给你,告诉我它是否有效我还没有时间测试它:

        if (user!=true)
        {
         System.IO.File.WriteAllText(@".\log"+ DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")+".log", "Arg count is " + args.Length.ToString()+"\nShow verbose output is = " + verbose.ToString());
        }
        
        Console.WriteLine("Arg count is " + args.Length.ToString()+"\nShow verbose output is = " + verbose.ToString()+"\n");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-02-11
          • 2013-07-16
          • 1970-01-01
          • 1970-01-01
          • 2016-03-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多