使用 Azure Service Fabric 部署 Log4net 自定义配置文件
Log4net custom config files deployment with Azure Serivce Fabric
我想从 xml 文件配置 log4net。我将此文件放在服务的根文件夹中。 属性 Copy to Output Directory
设置为 Copy Always
并且工作正常 — 正在复制文件。
当我尝试使用 log4net.Config.XmlConfigurator.ConfigureAndWatch
加载此文件时出现问题 — 它不在工作目录中,而是在另一个包含代码的目录中。
我不想将 log4net 配置放入 app.config。它现在不起作用,我会花很多时间来解决这个问题。
有没有办法向特定服务添加一些元数据(在文件中)然后访问它们?
有没有什么办法可以通用并且不把文件放在根目录下?例如,如果我想访问一些不能放在 Settings.xml 中的二进制数据,我该如何实现?
更新
看起来复制文件唯一需要做的就是将它们的 属性 设置为 Copy Always
。所以,我真正的问题是我有 C:\SfDevCluster\[..]\work
作为工作目录,而不是包含实际二进制文件的目录。
您可以为此使用自定义配置包或数据包。
使用 ServiceContext
对象访问文件。
更多信息here
您也可以使用 AppDomain.CurrentDomain.BaseDirectory 获取二进制文件所在的目录,这也是 log4net.config 文件所在的目录。
如果您使用的是 .net 核心,这对您没有帮助,因为它不再有应用程序域,但是您可以使用 Assembly.GetEntryAssembly() 之类的东西并从那里获取它的路径。您需要查找确切的语法。
我想从 xml 文件配置 log4net。我将此文件放在服务的根文件夹中。 属性 Copy to Output Directory
设置为 Copy Always
并且工作正常 — 正在复制文件。
当我尝试使用 log4net.Config.XmlConfigurator.ConfigureAndWatch
加载此文件时出现问题 — 它不在工作目录中,而是在另一个包含代码的目录中。
我不想将 log4net 配置放入 app.config。它现在不起作用,我会花很多时间来解决这个问题。
有没有办法向特定服务添加一些元数据(在文件中)然后访问它们?
有没有什么办法可以通用并且不把文件放在根目录下?例如,如果我想访问一些不能放在 Settings.xml 中的二进制数据,我该如何实现?
更新
看起来复制文件唯一需要做的就是将它们的 属性 设置为 Copy Always
。所以,我真正的问题是我有 C:\SfDevCluster\[..]\work
作为工作目录,而不是包含实际二进制文件的目录。
您可以为此使用自定义配置包或数据包。
使用 ServiceContext
对象访问文件。
更多信息here
您也可以使用 AppDomain.CurrentDomain.BaseDirectory 获取二进制文件所在的目录,这也是 log4net.config 文件所在的目录。
如果您使用的是 .net 核心,这对您没有帮助,因为它不再有应用程序域,但是您可以使用 Assembly.GetEntryAssembly() 之类的东西并从那里获取它的路径。您需要查找确切的语法。