<?xml version="1.0" encoding="UTF-8" ?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements.  See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership.  The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License.  You may obtain a copy of the License at
  ~
  ~   http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied.  See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="rolling" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="file" value="${appserver.base}/logs/continuum-buildagent.log"/>
    <param name="append" value="true"/>
    <param name="datePattern" value="'.'yyyy-MM-dd"/>
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d [%t] %-5p %c %x - %m%n"/>
    </layout>
  </appender>

  <!--
    <logger name="org.apache.continuum.buildagent">
      <level value="info"/>
    </logger>

    <logger name="org.apache.continuum.web">
      <level value="info"/>
    </logger>

    <logger name="org.apache.continuum.distributed">
      <level value="info"/>
    </logger>
  -->

  <logger name="org.springframework">
    <level value="error"/>
  </logger>

  <root>
    <priority value="info"/>
    <appender-ref ref="rolling"/>
  </root>
</log4j:configuration>
