EMMA Coverage Report (generated Tue May 18 22:13:27 CDT 2004)
[all classes][org.apache.velocity.runtime.log]

COVERAGE SUMMARY FOR SOURCE FILE [SimpleLog4JLogSystem.java]

nameclass, %method, %block, %line, %
SimpleLog4JLogSystem.java0%   (0/1)0%   (0/6)0%   (0/152)0%   (0/43)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class SimpleLog4JLogSystem0%   (0/1)0%   (0/6)0%   (0/152)0%   (0/43)
SimpleLog4JLogSystem (): void 0%   (0/1)0%   (0/9)0%   (0/4)
finalize (): void 0%   (0/1)0%   (0/3)0%   (0/2)
init (RuntimeServices): void 0%   (0/1)0%   (0/63)0%   (0/13)
internalInit (String): void 0%   (0/1)0%   (0/35)0%   (0/8)
logVelocityMessage (int, String): void 0%   (0/1)0%   (0/27)0%   (0/11)
shutdown (): void 0%   (0/1)0%   (0/15)0%   (0/5)

1package org.apache.velocity.runtime.log;
2 
3/*
4 * Copyright 2001,2004 The Apache Software Foundation.
5 * 
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 * 
10 *      http://www.apache.org/licenses/LICENSE-2.0
11 * 
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18 
19import java.util.Enumeration;
20 
21import org.apache.log4j.Category;
22import org.apache.log4j.RollingFileAppender;
23import org.apache.log4j.PatternLayout;
24import org.apache.log4j.Priority;
25import org.apache.log4j.Appender;
26 
27import org.apache.velocity.runtime.RuntimeConstants;
28import org.apache.velocity.runtime.RuntimeServices;
29 
30/**
31 *  Implementation of a simple log4j system that will either
32 *  latch onto an existing category, or just do a simple
33 *  rolling file log.  Derived from Jon's 'complicated'
34 *  version :)
35 *
36 * @author <a href="mailto:geirm@apache.org>Geir Magnusson Jr.</a>
37 * @version $Id: SimpleLog4JLogSystem.java,v 1.1.8.1 2004/03/03 23:22:57 geirm Exp $
38 */
39public class SimpleLog4JLogSystem implements LogSystem
40{
41    private RuntimeServices rsvc = null;
42 
43    /** log4java logging interface */
44    protected Category logger = null;
45 
46    public SimpleLog4JLogSystem()
47    {
48    }
49 
50    public void init( RuntimeServices rs )
51    {
52        rsvc = rs;
53 
54        /*
55         *  first see if there is a category specified and just use that - it allows
56         *  the application to make us use an existing logger
57         */
58 
59        String categoryname =  (String) rsvc.getProperty("runtime.log.logsystem.log4j.category");
60 
61        if ( categoryname != null )
62        {
63            logger = Category.getInstance( categoryname );
64        
65            logVelocityMessage( 0,
66                                "SimpleLog4JLogSystem using category '" + categoryname + "'");
67 
68            return;
69        }
70        
71        /*
72         *  if not, use the file...
73         */
74 
75        String logfile = rsvc.getString( RuntimeConstants.RUNTIME_LOG );
76 
77        /*
78         *  now init.  If we can't, panic!
79         */
80        try
81        {
82            internalInit( logfile );
83 
84            logVelocityMessage( 0, 
85                "SimpleLog4JLogSystem initialized using logfile '" + logfile + "'" );
86        }
87        catch( Exception e )
88        {
89            System.out.println( 
90                "PANIC : error configuring SimpleLog4JLogSystem : " + e );
91        }
92    }
93 
94    /**
95     *  initializes the log system using the logfile argument
96     */
97    private void internalInit( String logfile )
98        throws Exception
99    {
100        /*
101         *  do it by our classname to avoid conflicting with anything else 
102         *  that might be used...
103         */
104 
105        logger = Category.getInstance(this.getClass().getName());
106        logger.setAdditivity(false);
107 
108        /*
109         * Priority is set for DEBUG becouse this implementation checks 
110         * log level.
111         */
112        logger.setPriority(Priority.DEBUG);
113 
114        RollingFileAppender appender = new RollingFileAppender( new PatternLayout( "%d - %m%n"), logfile, true);
115        
116        appender.setMaxBackupIndex( 1 );
117        
118        appender.setMaximumFileSize( 100000 );
119        
120        logger.addAppender(appender);
121    }
122 
123    /**
124     *  logs messages
125     *
126     *  @param level severity level
127     *  @param message complete error message
128     */
129    public void logVelocityMessage(int level, String message)
130    {
131        switch (level) 
132        {
133            case LogSystem.WARN_ID:
134                logger.warn( message );
135                break;
136            case LogSystem.INFO_ID:
137                logger.info(message);
138                break;
139            case LogSystem.DEBUG_ID:
140                logger.debug(message);
141                break;
142            case LogSystem.ERROR_ID:
143                logger.error(message);
144                break;
145            default:
146                logger.debug(message);
147                break;
148        }
149    }
150 
151    /**
152     * Also do a shutdown if the object is destroy()'d.
153     */
154    protected void finalize() throws Throwable
155    {
156        shutdown();
157    }
158 
159    /** Close all destinations*/
160    public void shutdown()
161    {
162        Enumeration appenders = logger.getAllAppenders();
163        while (appenders.hasMoreElements())
164        {
165            Appender appender = (Appender)appenders.nextElement();
166            appender.close();
167        }
168    }
169}

[all classes][org.apache.velocity.runtime.log]
EMMA 2.0.4015 (stable) (C) Vladimir Roubtsov