运行控制台应用。如果bool User
为true
,我想将文本输出到控制台应用。
如果bool User
是false
,我想创建一个文件并将文本输出到那里。
适用于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());
答案 0 :(得分:0)
我建议您使用一些日志框架,例如NLog或log4net(两者都可以从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");