相关疑难解决方法(0)

log4net层次结构和日志记录级别

这个网站

可以为记录器分配级别.级别是log4net.Core.Level类的实例.以优先级递增的顺序定义以下级别:

  • 所有
  • DEBUG
  • 信息
  • 警告
  • 错误
  • 致命
  • 关闭

DEBUG似乎具有最低优先级,ERROR更高.

  • 如果我设置Min和Max示例DEBUG和ERROR,则会打印出DEBUG,INFO,WARN和ERROR.不使用最小和最大过滤器.如果我指定ERROR(Logging level = ERROR)它是否包括DEBUG,INFO和WARN
 <filter type="log4net.Filter.LevelRangeFilter">
     <param name="LevelMin" value="ERROR"/>
     <param name="LevelMax" value="ERROR"/>
 </filter>
Run Code Online (Sandbox Code Playgroud)

而不是最小和最大过滤器.是否可以配置级别并包括其下的所有其他级别以进行日志记录.

示例 - 将级别设置为错误,它将包括DEBUG,INFO,WARN和ERROR.这可能与log4net一起使用吗?

根据其中一条评论发布log4net配置:

     <?xml version="1.0" encoding="utf-8" ?>
     <configuration>
        <configSections>
            <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
        </configSections >
        <log4net debug="true">
  <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
        <layout type="log4net.Layout.XMLLayout" /> -->
        <param name="File" value="TestLog.log" />
        <param name="AppendToFile" value="false" />
        <layout type="log4net.Layout.PatternLayout">
            <header type="log4net.Util.PatternString" value="[START LOG] %newline" />
            <footer type="log4net.Util.PatternString" value="[END LOG] %newline" />
            <conversionPattern value="%d [%t] %-5p - …
Run Code Online (Sandbox Code Playgroud)

c# log4net log4net-configuration

118
推荐指数
6
解决办法
18万
查看次数

如何为多个构建配置选择不同的app.config

我有一个包含MSTest集成测试的dll类型项目.在我的机器上测试通过,我希望在CI服务器上发生同样的事情(我使用TeamCity).但是测试失败了,因为我需要在app.config中调整一些设置.这就是为什么我想要一个单独的第二个app.config文件来保存CI服务器的设置.

所以我想拥有

/Sln
 /Proj
  app.config (I think this is required by VS)
  app.Release.config (This is a standalone independent config file)

因此,如果我在CI上的构建配置中选择Release配置,我想使用app.Release.config文件而不是app.config

问题
对于简单的.dll类型项目,这似乎并不简单.对于Web项目,我可以进行Web配置转换.我找到了一个黑客如何为dll类型的项目进行这些转换,但我不是黑客的忠实粉丝.

问题
根据.NET项目的构建配置(例如Debug,Release,...)调整app.config文件的标准方法是什么?

.net configuration continuous-integration release-management visual-studio

114
推荐指数
5
解决办法
11万
查看次数

在部署环境之间管理复杂的Web.Config文件

有谁知道Web.Config在不同的构建/部署环境之间管理文件的任何好的工具/实用程序?

例如,我有一个WCF项目,在开发中我不想启用SSL,但我确实希望它在生产中启用.我想要不同的日志记录设置,不同的数据库连接字符串,不同的错误处理,不同的文件路径...甚至一些不同的Unity框架绑定(连接模拟单元测试而不是用于部署的真实对象).

维护单个副本Web.Config是一件痛苦的事,因为添加新的Web服务意味着编辑多个文件并使它们保持同步.

我也注意到,如果你Web.Config手工捣乱太多,如果你尝试使用"添加项目"向导,比如为WCF添加一个新的Web服务,Visual Studio将会窒息,因为它必须修改Web .Config添加端点,nd不能解析它.所以我必须小心不要使现有的Web.Config无效.

我还考虑过使用一些正则表达式进行替换,只是Web.Config在预构建命令中构建一个新的.这似乎是迄今为止最好的选择......

还有其他想法吗?看起来这应该是一个非常普遍的问题,因为Web.Config在开发和生产部署之间可能永远不会是相同的.


更新:

我决定编写一个快速控制台应用程序,它将获取给定目录中的所有xml文件并将它们合并为一个,并且仅包含基于名称的某些文件.

所以我可以在一个目录中:

WebConfig_All

<configuration>
  <configSections>
    ...
  </configSections>
  <system.web>
    ...
  </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

connectionStrings_Debug

<configuration>
  <connectionStrings>
    <add name="connstr" connectionString="...dev..." />
  </connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

connectionStrings_Release

<configuration>
  <connectionStrings>
    <add name="connstr" connectionString="...prod..." />
  </connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

然后运行我的命令行工具,并传入配置(Debug,Release,custom ...)并将合并所有以_All" or_ <configuration>` 结尾的文件.

所以现在我将80%的Web.Config放在一个WebConfig_All文件中,20%的自定义内容放在每个构建配置的单独文件中.然后,我可以将我的命令行工具作为VisualStudio中的预构建任务运行,或者从NAnt运行,或者在我想要的任何地方运行...

我还使我的XML合并逻辑足以处理以下内容:

<x>
  <y a="1">
    <z a="1"/>
  </y>
</x>
Run Code Online (Sandbox Code Playgroud)

合并

<x>
  <y a="1">
    <z a="2"/>
  </y>
  <y a="2"/>
</x>
Run Code Online (Sandbox Code Playgroud)

结果是:

<x>
  <y a="1"> …
Run Code Online (Sandbox Code Playgroud)

.net asp.net wcf visual-studio

53
推荐指数
3
解决办法
2万
查看次数

如何根据构建配置有条件地部署app.config?

我有三个自定义构建配置{Dev,Qs,Prd}.所以,我有三个app配置{Dev.config,Qs.config,Prd.config}.我知道如何根据当前的构建配置编辑.csproj文件以输出正确的文件.

<Target Name="AfterBuild">
   <Delete Files="$(TargetDir)$(TargetFileName).config" />
   <Copy SourceFiles="$(ProjectDir)$(Configuration).config" DestinationFiles="$(TargetDir)$(TargetFileName).config" />
</Target>
Run Code Online (Sandbox Code Playgroud)

我的问题是,我需要有六个构建配置{Dev,Qs,Prd} x {Debug,Release}.我需要支持每个环境的调试和发布设置(优化,pdb等).但是,app配置值在调试/发布之间不会更改.

如何使构建脚本尽可能保持通用,并仅使用三个应用程序配置?我不想硬编码太多的条件字符串.

.net deployment msbuild configuration

18
推荐指数
2
解决办法
3万
查看次数