/**
* Copyright (C) 2008-2010, Squale Project - http://www.squale.org
*
* This file is part of Squale.
*
* Squale is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or any later version.
*
* Squale is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Squale. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* Cr�� le 28 oct. 04
*/
package org.squale.jraf.provider.logging.cexi;
import org.apache.log4j.Level;
import org.apache.log4j.helpers.FormattingInfo;
import org.apache.log4j.helpers.PatternConverter;
import org.apache.log4j.spi.LoggingEvent;
import org.squale.jraf.spi.logging.IGroup;
import org.squale.jraf.spi.logging.ILogger;
import org.squale.jraf.spi.logging.ISeverity;
/**
* <p>Title : PatternParser.java</p>
* <p>Description : Parser de pattern log4j.
* Permet d'ajouter des patterns aux patterns log4j
* Cette classe permet d'adapter les logs JRAF au formalisme CEXI.
* </p>
* <p>Copyright : Copyright (c) 2004</p>
*
*/
public class PatternParser extends org.apache.log4j.helpers.PatternParser {
/** initialisation JRAF -> CONFIGURATION CEXI*/
private final static String JRAF_CFG = "org.squale.jraf.bootstrap";
/** initialisation JRAF -> CONFIGURATION CEXI*/
private final static String JRAF_INIT = "org.squale.jraf.initializer";
/** persistance JRAF -> DB CEXI*/
private final static String JRAF_DB =
"org.squale.jraf.provider.persistence";
/** JRAF -> APPLICATION CEXI*/
private final static String JRAF_ALL = "org.squale.jraf";
/**
* Constructeur
* @param arg0
*/
public PatternParser(String arg0) {
super(arg0);
}
/**
* Parse des converteurs
*/
public void finalizeConverter(char c) {
if (c == 's') {
addConverter(new Level2SeverityPatternConverter(formattingInfo));
currentLiteral.setLength(0);
} else if (c == 'g') {
addConverter(new JRAF2GroupPatternConverter(formattingInfo));
currentLiteral.setLength(0);
} else {
super.finalizeConverter(c);
}
}
/**
* <p>Title : Level2SeverityPatternConverter</p>
* <p>Description : Definition a partir d'une classe JRAF
* de son groupe CEXI: APPLICATION, CONFIGURATION ou DATABASE.</p>
* <p>Copyright : Copyright (c) 2004</p>
*
*/
private class JRAF2GroupPatternConverter extends PatternConverter {
JRAF2GroupPatternConverter(FormattingInfo formattingInfo) {
super(formattingInfo);
}
public String convert(LoggingEvent event) {
if (event.getLoggerName().startsWith(JRAF_CFG)
|| event.getLoggerName().startsWith(JRAF_INIT)) {
return IGroup.CONFIGURATION;
}
if (event.getLoggerName().startsWith(JRAF_DB)) {
return IGroup.DATABASE;
}
if (event.getLoggerName().startsWith(JRAF_ALL)) {
return IGroup.APPLICATION;
}
return null;
}
}
/**
* <p>Title : Level2SeverityPatternConverter</p>
* <p>Description : Conversion du niveau log4j en niveau CEXI
* DEBUG -> debug,
* INFO -> normal,
* WARN -> warning,
* ERROR -> major,
* FATAL -> critical.
* Note: la severite minor n'est pas utilisee.
* </p>
* <p>Copyright : Copyright (c) 2004</p>
*
*/
private class Level2SeverityPatternConverter extends PatternConverter {
Level2SeverityPatternConverter(FormattingInfo formattingInfo) {
super(formattingInfo);
}
public String convert(LoggingEvent event) {
if (event.getLevel() == Level.DEBUG) {
return ISeverity.DEBUG;
}
if (event.getLevel() == Level.INFO) {
return ISeverity.NORMAL;
}
if (event.getLevel() == Level.WARN) {
return ISeverity.WARNING;
}
if (event.getLevel() == Level.ERROR) {
return ISeverity.MAJOR;
}
if (event.getLevel() == Level.FATAL) {
return ISeverity.CRITICAL;
} else
return null;
}
}
}