代码之家  ›  专栏  ›  技术社区  ›  jp2code

将单个应用程序的多个实例中的数据写入一个文件,C,Visual Studio 2008

  •  2
  • jp2code  · 技术社区  · 15 年前

    我有一个Visual Studio项目,它可以安装到我们公司大约一半的PC上。

    应用程序有一个错误日志记录例程,将错误消息附加到保存在此处的文本文件:

    static string _appPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), Application.CompanyName);
    

    在大多数情况下,这很好地工作,并允许我访问个人电脑上的日志文件。

    它不适用于任何地方。某些用户的帐户有限,这些帐户没有权限写入 Environment.SpecialFolder.CommonApplicationData 文件夹。

    我可以修改存储在此处的路径:

    static string _newPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Application.CompanyName);
    

    但是,当我需要收集日志文件时,我必须挖掘每台PC上的每个用户帐户文件夹以获取日志。

    我想做的是将这些消息存储在我们的内部网络上。问题在于如何处理多个写实例。

    static string _netPath = Path.Combine(@"\\FileServer1", Application.CompanyName);
    

    我想使用消息传递,但我不知道该怎么做——或者它是否是一个很好的解决方案。管理层希望我在这个星期五(今天是星期三)推出这个更新。

    最简单、最可靠的使用方法是什么 _netPath 在我们的网络中存储大约100台电脑的日志文件?

    注: 请,如果您参考了msdn,请粘贴文章。我们有一个旧的Microsoft ISA防火墙,无法通过msdn网站。(ISA服务器每次都会超时,这太让人沮丧了!见 ISA Proxy Server can't... 因为我在这件事上没有回答的问题。)

    3 回复  |  直到 15 年前
        1
  •  5
  •   Beth    15 年前

    在网络文件夹中以不同的名称保存每个PC的日志文件,而不是让所有PC共享相同的日志文件。

    您可以使用他们的网络ID作为名称或其他您可以自动生成的内容。

        2
  •  1
  •   stevenrcfox    15 年前

    将电脑名也添加到文件名中… 然后,您不需要将所有实例都写入同一个文件,当您接到支持电话时,您可以直接转到该用户的PC的文件,该用户的PC是从以下位置登录的…

    或者,只需使用一个普通的WCF服务(甚至是自托管的)来管理对文件的写入,其他所有机器都只需调用服务方法。

    你也可以通过wcf使用msmq

        3
  •  0
  •   Justin Morgan    15 年前

    如果您使用一个集中式服务来实现这一点呢?在某个内部服务器上创建一个简单的日志WebService,并将数据发送到WebService。这样,只有WebService需要访问日志文件,只要每个人都能接触到该服务。然后您可以将它们全部存储在一个文件夹中,或者对它们做任何您想做的事情。

    当然,它不必是一个WebService,但这是一个非常快速和简单的方法,这是第一个让人想到的方法。实际上,任何客户机可以访问的集中式应用程序都应该做到这一点。