使用Excel作为日志阅读器。 如果Excel打开它,如何写入日志文件?

我已经进入了一个位置,所有现有的预定应用程序都将其日志写入.CSV文件,以便人们可以在Excel中打开它们。 当有人打开日志文件并将其保持打开状态时,就会出现问题。 应用程序然后不能写入他们的日志,并通过规则,他们死亡。

所以选项是:

  1. 以某种方式让用户以非专有的方式在Excel中打开文件;
  2. 不pipe用户的粗鲁程度如何,都能够写入日志;
  3. 写一个更友好,更温和的日志阅读器(不,公司运行在Excel和.csv文件,他们不会改变);
  4. ???????

还是我错过了一个完全无脑的方式来处理这个问题?

大多数的应用程序目前是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

我强烈推荐它作为日志框架。

(我没有参与这个项目 – 只是一个在我所从事的项目中多次使用过它的粉丝)。