7

대부분의 응용 프로그램에서는 데이터베이스 액세스/모델링에 iBatis.Net을 사용하고 로깅에는 log4Net을 사용합니다. 이 과정에서 각 프로젝트마다 * .config 파일을 여러 개 필요합니다. 예를 들어, 간단한 응용 프로그램을 위해 나는 다음과 같은 *의 .config 파일이 필요합니다 : (.의 AssemblyName] [증축]의 .config)구성 파일 수를 최대한 줄입니다

  • 의 app.config를
  • [의 AssemblyName] .SqlMap.config
  • [의 AssemblyName] .log4Net.config
  • [의 AssemblyName] .SqlMapProperties.config
  • providers.config

이러한 응용 프로그램은 생산에 테스트하려면 DEV에서 이동 환경에 따라이 파일에 포함 된 설정은 환경에 따라 다릅니다.

프로젝트 당 5 ~ 10 개 이상의 지원되는 실행 파일을 사용하여 파일 수가 늘어날 경우 인프라 팀 (다른 환경으로 롤아웃하는 작업 부하)의 작업 부하가 다소 높아집니다. 또한 설정 파일 중 하나가 누락되거나 설정 파일에 잘못 입력 될 위험이 높습니다.

이러한 위험을 피하는 가장 좋은 방법은 무엇입니까? 모든 설정 파일을 하나의 파일로 결합해야합니까? (iBatis에서 가능합니까?) VisualStudio 2010에서는 개발자가 다른 환경의 모든 설정을 설정 한 다음 동적으로 (빌드에 따라) 설정 파일을 업데이트하도록 설정 파일에 대한 변환을 도입한다는 사실을 알고 있습니다 올바른 버전으로. (VS 2010 - transforms)

제공 할 수있는 도움에 감사드립니다.

답변

2

당신은 내가 내 웹 응용 프로그램 중 하나에 내 웹에서 log4net, 액티브 레코드와 Ciphersafe을 사용하고

구성 섹션을 추가하여 주 *의 .config 파일 (예 : Web.config의 또는의 app.config)를 변경할 수 있습니다 .config 내가 가지고

<configuration> 
... 
<configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
      <section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord" /> 
      <section name="cipherSafeConfigSection" type="Obviex.CipherSafe.AppConfigSectionHandler,CipherSafe" /> 
    </configSections> 
... 
</configuration> 

그럼 내가 각각에 대한 구성 섹션을 가지고 내가 가지고 log4net에 대한

<configuration> 
... 
<log4net> 
     <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
      <file value="Logs\\TimeRegWeb.log"/> 
      <appendToFile value="true"/> 
      <datePattern value="yyyyMMdd"/> 
      <rollingStyle value="Date"/> 
      <filter type="log4net.Filter.LevelRangeFilter"> 
       <acceptOnMatch value="true"/> 
       <levelMin value="DEBUG"/> 
       <levelMax value="FATAL"/> 
      </filter> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n"/> 
      </layout> 
     </appender> 
     <root> 
      <level value="DEBUG"/> 
      <appender-ref ref="RollingLogFileAppender"/> 
     </root> 
    </log4net> 
... 
</configuration> 

그런 식으로 나는 단지 1 web.config 파일이 있습니다. 그런 다음 모든 외부 어셈블리와 구성 파일을 포함하는 솔루션 이름 ProjectFiles에 별도의 프로젝트를 만들었습니다. 그런 다음 작업 측의 솔루션을 업데이트하라는 요청을하면 웹 응용 프로그램 파일과 관련된 구성 파일 (테스트 또는 제품)을 복사합니다.

2

또 다른 방법은 빌드 또는 배포시 생성 된 구성 파일을 무언가 AWK 스크립트 또는 XSLT와 같이 각 환경에 대한 특정 설정이 포함 된 단일 파일과 결합됩니다.

ANT에는이를 허용하는 플러그인이 있으며, 다른 빌드 도구도이를 허용하거나 잘 게시 된 API를 사용하여 플러그인 할 수 있습니다.

는 예를 들어, 당신은 이러한 태그가 될 것이다 배포 할

dbUri=jdbc:oracle:10.1.1.10:1224:ORCL 
dbUser=Scott 
dbCredentials=Tiger 

같은 환경에서 가져온 각 환경

[email protected]@dbUri 
[email protected]@dbUser 
[email protected]@dbCredentials 

같은과에 대한 파일을 뭔가를 읽고 템플릿 파일이있을 수 있습니다 물론 어떤 방법으로 빌드 스크립트에 제공되었지만 어쨌든 그렇게해야합니다.

+0

+1 빌드 서버에 작업을 푸시하는 데 +1 –