使用Excel作为日志阅读器。 如果Excel打开它,如何写入日志文件?
我已经进入了一个位置,所有现有的预定应用程序都将其日志写入.CSV文件,以便人们可以在Excel中打开它们。 当有人打开日志文件并将其保持打开状态时,就会出现问题。 应用程序然后不能写入他们的日志,并通过规则,他们死亡。
所以选项是:
- 以某种方式让用户以非专有的方式在Excel中打开文件;
- 不pipe用户的粗鲁程度如何,都能够写入日志;
- 写一个更友好,更温和的日志阅读器(不,公司运行在Excel和.csv文件,他们不会改变);
- ???????
还是我错过了一个完全无脑的方式来处理这个问题?
大多数的应用程序目前是VBScript,但我已经设法将其中的许多转换为C#控制台应用程序,所以这两种风格的答案都是受欢迎的。
如果您在包含CSV文件的文件夹上正确设置NTFS权限,以便您的用户只有读取权限,而您的计划任务正在以完全访问权限运行,则Excel将以只读模式打开文件。
这将防止Excel持有这些文件的锁,并允许您的日志继续不受阻碍地继续。
你可以使用像Serilog这样的日志框架。
当你configurationSerilog时,你可以定义多个输出(Serilog称它们为接收器)。 因此,例如,您可以将应用程序configuration为写入Windows事件日志以及CSV文件。 即使有人打开了CSV文件,您的应用程序也可以继续login到事件日志。
示例configuration可以是:
var log = new LoggerConfiguration() .WriteTo.File("log.csv") .WriteTo.EventLog("My App") .CreateLogger();
然后,写入日志,你只需要:
log.Information("This is a sample log entry");
还有一些其他的元素需要设置,但他们的网站上的文档是伟大的,并会让你开始。
Serilog非常轻巧,configuration速度快,所以不需要太多的努力来更新应用程序就可以使用它。
这里是Serilog主页: https : //github.com/serilog/serilog/wiki
我强烈推荐它作为日志框架。
(我没有参与这个项目 – 只是一个在我所从事的项目中多次使用过它的粉丝)。