Warm tip: This article is reproduced from serverfault.com, please click

xml-如何在Azure管道中访问log4net附加程序文件值并进行替换

(xml - How to access log4net appender file value and replace in the azure pipelines)

发布于 2020-11-30 16:25:06

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

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

我正在使用FileTransform任务来实现这一目标。如何访问log4net附加程序文件值并在azure管道中进行替换如何以及如何在变量中设置“名称”。我希望将“值”设置为“ D:\ Logs \ log.txt”。谢谢。

Questioner
Programmer
Viewed
0
Levi Lu-MSFT 2020-12-01 11:30:34

FileTransform任务文档中所述管道中定义的变量将与appSettings,applicationSettings和connectionStrings部分中的keyname条目匹配

在构建或发布管道中定义的变量将与任何配置文件和parameters.xml的appSettings,applicationSettings和connectionStrings部分中的“ key”或“ name”条目匹配。变量替换在配置转换后运行。

因此,你可以在配置文件中namefile属性添加属性例如在下面。我添加一个名称属性LogFile

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

然后,你可以LogFile在azure devops管道的“变量”部分中定义一个命名为变量的变量。请参见以下示例:

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

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

如果你不想向name属性添加file属性。你可以使用Task Magic Chuncks替换file属性的值

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

请参见这里了解如何转换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"
      }