我正在寻找一种方法来为每个Console.Write [Line]插入前缀(日期和时间).我正在寻找一种推荐的方法,就像改变输出的推荐方法是使用Console.SetOut.
我很清楚我可以做String.Format("{0} {1}",DateTime.Now,msg),但我想把它作为我的最后手段.
问题是输出在运行时是可更改的,默认值已经附加了当前时间.如果我将它附加到我的代码上,我将复制日期.
有这样的事吗?我正在使用Monotouch,所以我只能使用为它编译的库.
Chr*_*heD 15
你需要继承从System.IO.TextWrite,提供Encoding了如和覆盖WriteLine和Write.Console.Out在更换前存放原件Console.setOut(x).
这是一个完整的代码示例:
class PrefixedWriter : TextWriter
{
private TextWriter originalOut;
public PrefixedWriter()
{
originalOut = Console.Out;
}
public override Encoding Encoding
{
get { return new System.Text.ASCIIEncoding(); }
}
public override void WriteLine(string message)
{
originalOut.WriteLine(String.Format("{0} {1}", DateTime.Now, message));
}
public override void Write(string message)
{
originalOut.Write(String.Format("{0} {1}", DateTime.Now, message));
}
}
class Program
{
static void Main(string[] args)
{
Console.SetOut(new PrefixedWriter());
Console.WriteLine("test 1 2 3");
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以用自己的类替换Console调用.
class MyConsole
{
public static void WriteLine(string msg)
{
Console.Write(String.Format("{0} {1}", DateTime.Now, msg));
}
}
Run Code Online (Sandbox Code Playgroud)
当然,所有的电话都Console.Write成了MyConsole.Write.
你也可以把它更进一步,别名Console用MyConsole在所有的代码文件...
using Console = MyNamespace.MyConsole;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3599 次 |
| 最近记录: |