创建一个文本文件,并在bool为false时写入该文件

时间:2014-02-07 19:43:56

标签: c# logging console console-application

运行控制台应用。如果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());

3 个答案:

答案 0 :(得分:0)

我建议您使用一些日志框架,例如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" />

答案 1 :(得分:0)

请尝试使用WriteAllText。它简单易行。

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

希望这有帮助

答案 2 :(得分:0)

在这里,请告诉我它是否有效我还没有时间测试它:

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");