Project

General

Profile

Download (3.69 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 * Copyright (C) 2009 EDIT
3
 * European Distributed Institute of Taxonomy
4
 * http://www.e-taxonomy.eu
5
 *
6
 * The contents of this file are subject to the Mozilla Public License Version 1.1
7
 * See LICENSE.TXT at the top of this package for the full license terms.
8
 */
9
package eu.etaxonomy.cdm.opt.config;
10

    
11
import java.io.IOException;
12
import java.util.Enumeration;
13

    
14
import org.apache.log4j.Appender;
15
import org.apache.log4j.EnhancedPatternLayout;
16
import org.apache.log4j.Logger;
17
import org.apache.log4j.PatternLayout;
18
import org.apache.log4j.RollingFileAppender;
19
import org.springframework.beans.factory.InitializingBean;
20
import org.springframework.beans.factory.annotation.Autowired;
21
import org.springframework.context.annotation.Configuration;
22

    
23
import eu.etaxonomy.cdm.remote.config.AbstractWebApplicationConfigurer;
24

    
25
/**
26
 * @author a.kohlbecker
27
 * @since 20.07.2010
28
 *
29
 */
30
@Configuration
31
public class LoggingConfigurer extends AbstractWebApplicationConfigurer implements InitializingBean  {
32

    
33
    @Autowired
34
    private DataSourceProperties dataSourceProperties = null;
35

    
36
    /**
37
     *
38
     */
39
    private static final String ROLLING_FILE_APPENDER = "rollingFileAppender";
40

    
41
    /**
42
     * see also <code>eu.etaxonomy.cdm.server.instance.SharedAttributes</code>
43
     */
44
    private static final String CDM_LOGFILE = "cdm.logfile";
45

    
46
    private void configureLogFile() {
47
        PatternLayout layout = new PatternLayout("%d %p [%c] - %m%n");
48
        String logFile = findProperty(CDM_LOGFILE, false);
49
        if (logFile == null) {
50
            logger.info("No logfile specified, running without.");
51
            return;
52
        }
53
        try {
54
            RollingFileAppender appender = new RollingFileAppender(layout, logFile);
55
            appender.setName(ROLLING_FILE_APPENDER);
56
            appender.setMaxBackupIndex(3);
57
            appender.setMaxFileSize("2MB");
58
            Logger.getRootLogger().addAppender(appender);
59
            logger.info("logging to :" + logFile);
60
        } catch (IOException e) {
61
            logger.error("Creating RollingFileAppender failed:", e);
62
        }
63
    }
64

    
65
    /**
66
     *
67
     */
68
    private void configureInstanceNamePrefix() {
69
        String instanceName = dataSourceProperties.getCurrentDataSourceId();
70
        String patternPrefix = "[" + instanceName + "] ";
71

    
72
        @SuppressWarnings("unchecked")
73
        Enumeration<Appender> appenders = Logger.getRootLogger().getAllAppenders();
74
        while(appenders.hasMoreElements()){
75
            Appender appender = appenders.nextElement();
76
            if(appender != null){
77
                if(appender.getLayout() instanceof PatternLayout){
78
                    PatternLayout layout = (PatternLayout)appender.getLayout();
79
                    String conversionPattern = layout.getConversionPattern();
80
                    if(!conversionPattern.startsWith(patternPrefix)){
81
                        layout.setConversionPattern(patternPrefix + conversionPattern);
82
                    }
83
                }
84
                if(appender.getLayout() instanceof EnhancedPatternLayout){
85
                    EnhancedPatternLayout layout = (EnhancedPatternLayout)appender.getLayout();
86
                    String conversionPattern = layout.getConversionPattern();
87
                    if(!conversionPattern.startsWith(patternPrefix)){
88
                        layout.setConversionPattern(patternPrefix + conversionPattern);
89
                    }
90
                }
91
            }
92
        }
93

    
94
    }
95

    
96
    /* (non-Javadoc)
97
     * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
98
     */
99
    @Override
100
    public void afterPropertiesSet() throws Exception {
101
        // per instance logfiles disabled, see #6249
102
        // configureLogFile();
103
        configureInstanceNamePrefix();
104
    }
105

    
106

    
107
}
(4-4/5)