Asp.net 使用Web.Config转换来更改;“尺寸”;log4net中的元素;参数";
我正在做一个ASP.NET项目,它使用log4net。在开发环境中,我希望将Asp.net 使用Web.Config转换来更改;“尺寸”;log4net中的元素;参数";,asp.net,web-config-transform,xdt-transform,Asp.net,Web Config Transform,Xdt Transform,我正在做一个ASP.NET项目,它使用log4net。在开发环境中,我希望将@stackTrace参数的size元素设置为比其他环境中更高的值 log4net.config文件的结构为: <?xml version="1.0"?> <configuration> <log4net debug="true"> <appender name="SQLServerAppender" type="log4net.Appender.AdoN
@stackTrace
参数的size
元素设置为比其他环境中更高的值
log4net.config文件的结构为:
<?xml version="1.0"?>
<configuration>
<log4net debug="true">
<appender name="SQLServerAppender" type="log4net.Appender.AdoNetAppender">
<parameter>
<parameterName value="@stackTrace"/>
<dbType value="String"/>
<size value="1000"/>
<layout type="log4net.Layout.RawPropertyLayout">
<key value="stackTrace"/>
</layout>
</parameter>
<!-- More parameters -->
</appender>
</log4net>
</configuration>
“移除”是试图让事情发生的最后手段
我应该如何执行所需的转换?在这种情况下,我不清楚如何将
xdt:Locator
与xdt:Transform
结合起来。我可能会弄错,但我认为Web.config转换不能应用于其他任意xml文件
为此,我通常使用SlowCheetah:
这是一个非常好的工具,非常容易使用(类似于web.config转换,但可以应用于任何东西),并且与自动化构建和部署集成得非常好
下面是Scott Hanselman的指南:
我可能弄错了,但我认为Web.config转换不能应用于其他任意xml文件 为此,我通常使用SlowCheetah: 这是一个非常好的工具,非常容易使用(类似于web.config转换,但可以应用于任何东西),并且与自动化构建和部署集成得非常好 下面是Scott Hanselman的指南: 试试这个:
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<log4net>
<appender name="SQLServerAppender" type="log4net.Appender.AdoNetAppender">
<parameter>
<size value="2000" xdt:Locator="XPath(configuration/log4net/appender[@name='SQLServerAppender']/parameter[parameterName[@value='@stackTrace']])" xdt:Transform="SetAttributes"/>
</parameter>
</appender>
</log4net>
试试这个:
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<log4net>
<appender name="SQLServerAppender" type="log4net.Appender.AdoNetAppender">
<parameter>
<size value="2000" xdt:Locator="XPath(configuration/log4net/appender[@name='SQLServerAppender']/parameter[parameterName[@value='@stackTrace']])" xdt:Transform="SetAttributes"/>
</parameter>
</appender>
</log4net>
在回答不起作用后,我四处玩了一会儿,想知道为什么不起作用
我首先把
值放回原处(为了清楚起见,我把它从帖子中删掉了),它确实起了作用。这证明找到了正确的
,但没有找到正确的
。“找到”或“定位”。这是一个暗示
我查看了XPath表达式,发现它正试图定位
,该表达式的
属性值为
,属性值为@stackTrace
。因此我尝试使用条件
:
<parameter xdt:Locator="Condition([parameterName[@value='@stackTrace']])"
xdt:Transform="Replace">
</parameter>
这成功了
因此,最后的转换是:
<parameter xdt:Locator="Condition([parameterName[@value='@stackTrace']])">
<size value="2000" xdt:Transform="Replace" />
</parameter>
在回答不起作用后,我四处玩了一会儿,想找出原因
我首先把
值放回原处(为了清楚起见,我把它从帖子中删掉了),它确实起了作用。这证明找到了正确的
,但没有找到正确的
。“找到”或“定位”。这是一个暗示
我查看了XPath表达式,发现它正试图定位
,该表达式的
属性值为
,属性值为@stackTrace
。因此我尝试使用条件
:
<parameter xdt:Locator="Condition([parameterName[@value='@stackTrace']])"
xdt:Transform="Replace">
</parameter>
这成功了
因此,最后的转换是:
<parameter xdt:Locator="Condition([parameterName[@value='@stackTrace']])">
<size value="2000" xdt:Transform="Replace" />
</parameter>
如果我不清楚,很抱歉,我们已经在为log4net.config使用转换。为了清晰起见,我从文件中删除了其他变换。我的问题是这个特定的转换。如果我不清楚,很抱歉,但是我们已经在为log4net.config使用转换。为了清晰起见,我从文件中删除了其他变换。我的问题是这个特殊的转换。