如何访问 log4net appender 文件值并在 azure 管道中替换

How to access log4net appender file value and replace in the azure pipelines

我正在尝试替换管道中的日志文件路径

<configuration>
 <configSections>
  <applicationSettings>
   <log4net debug="true">
    <appender name="appender1">
        <file value="log.txt"/>
    </appender>
   </log4net>
  </applicationSettings>
 </configSections>
</configuration>

我正在使用 FileTransform 任务来实现此目的。 如何访问 log4net appender 文件值并在 azure 管道中替换 要在变量中设置的“名称”应该是什么以及如何设置。 我希望将“值”设置为“D:\Logs\log.txt”。谢谢

FileTransform task document中所述。管道中定义的变量将与 appSettings、applicationSettings 和 connectionStrings 部分中的 keyname 条目匹配。

Variables defined in the build or release pipelines will be matched against the 'key' or 'name' entries in the appSettings, applicationSettings, and connectionStrings sections of any config file and parameters.xml. Variable Substitution is run after config transforms.

因此您可以在配置文件中向 file 属性 添加一个 name 属性。例如在下面。我添加一个名称属性 LogFile:

 <applicationSettings>
   <log4net debug="true">
    <appender name="appender1">
        <file name="LogFile" value="log.txt"/>
    </appender>
   </log4net>
  </applicationSettings>

然后您可以在 azure devops 管道的变量部分定义一个名为 LogFile 的变量。请参阅以下示例:

variables:
  LogFile: D:\Logs\log.txt

steps:
- task: FileTransform@1
  inputs:
    folderPath: $(System.DefaultWorkingDirectory)
    fileType: xml
    

如果您不想将 name 属性添加到 file 属性。可以使用TaskMagic Chuncks来替换file属性.

的值

设置转换configuration/configSections/applicationSettings/log4net/appender/file/@value": "D:\Logs\log.txt"。请参阅以下示例:

请参阅 here 了解如何转换 XML 个文件

steps:
- task: sergeyzwezdin.magic-chunks.magic.chunks.MagicChunks@2
  displayName: 'Config transform'
  inputs:
    sourcePath: '$(System.DefaultWorkingDirectory)/path/to/app.config'
    transformations: |
     {
       "configuration/configSections/applicationSettings/log4net/appender/file/@value": "D:\Logs\log.txt"
      }