首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >c#记录在控制台中写入的所有内容

c#记录在控制台中写入的所有内容
EN

Stack Overflow用户
提问于 2013-07-27 05:11:15
回答 5查看 2.5K关注 0票数 1

我有一个用c#编码的服务器,我想知道..有没有一种方法可以记录控制台中弹出的所有内容,而不必遍历每一行写着Console.WriteLine和add StreamWriter或其他内容的行?

我将使用这个:

代码语言:javascript
复制
 *.exe > *.log

但我希望在登录时能够看到控制台。有什么想法吗?

EN

回答 5

Stack Overflow用户

发布于 2013-07-27 05:15:44

您可以使用Trace同时写入控制台和文件:

代码语言:javascript
复制
Trace.WriteLine("Hello");

要设置控制台和文件输出,请在应用程序启动时使用以下命令:

代码语言:javascript
复制
Trace.AutoFlush = true;
Trace.Listeners.Clear();
Trace.Listeners.Add(new ConsoleTraceListener());
Trace.Listeners.Add(new TextWriterTraceListener("log.txt"));

可以从配置文件中配置相同的配置

代码语言:javascript
复制
<system.diagnostics>
  <trace autoflush="true">
    <listeners>
      <clear/>
      <add name="console" type="System.Diagnostics.ConsoleTraceListener"/>
      <add name="file" type="System.Diagnostics.TextWriterTraceListener"
           initializeData="log2.txt"/>
    </listeners>
  </trace>
</system.diagnostics>

但是可以考虑使用一些日志框架行NLog (可以从NuGet获得)。我认为这就是你需要的--你可以写到控制台和文件,以及许多其他的目标,你可以通过更改配置文件来添加和删除它们:

代码语言:javascript
复制
<targets>
  <target xsi:type="Console" name="console" layout="${time} ${message}"/>
  <target xsi:type="File" name="file" fileName="${basedir}/logs/log.txt"/>
</targets>
<rules>   
  <logger name="*" minlevel="Trace" writeTo="file,console" />    
</rules>

用法:

代码语言:javascript
复制
Logger logger = LogManager.GetCurrentClassLogger();
// after you obtained logger
logger.Info("Hello");// message goes to all targets
票数 4
EN

Stack Overflow用户

发布于 2013-07-27 05:15:47

这样做的可行性和易用性取决于您的程序是如何启动的。

如果您的程序是从命令行、批处理脚本或快捷方式启动的,则只需重定向输出即可。如下所示:

代码语言:javascript
复制
myprogram.exe > mylogfile.txt

如果您正在编写一个启动另一个程序的程序,则可以通过在代码中重定向输出来完成相同的操作。请参阅ProcessStartInfo.RedirectStandardOutput

票数 1
EN

Stack Overflow用户

发布于 2013-07-27 06:05:14

我认为您正在寻找的是使用像tee这样的东西。它旨在让您查看控制台输出,并将相同输出重定向到文件。

它不是Windows自带的,但它和其他有用的工具都可以在http://gnuwin32.sourceforge.net上找到。当然胜过重写你的代码。:-)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17891088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档