/*
* $Id: LoggingPreferences.java,v 1.10 2002/09/16 08:05:06 jkl Exp $
*
* Copyright (c) 2002 Njet Communications Ltd. All Rights Reserved.
*
* Use is subject to license terms, as defined in
* Anvil Sofware License, Version 1.1. See LICENSE
* file, or http://njet.org/license-1.1.txt
*/
package anvil.server;
import anvil.Log;
import anvil.LogLayout;
import anvil.LogDevice;
/**
* class LoggingPreferences
*
* @author: Jani Lehtim�ki
*/
public class LoggingPreferences extends Preferences
{
public static final String[] PREFERENCES = {
"format", "string",
"target", "string",
"provider", "string",
"level", "Emergency;Alert;Critical;Error;Warning;Notice;Info;Debug"
};
private String _provider = "anvil.server.basic.BasicLogDevice";
private String _format = "basic";
private String _target = "stderr";
private int _level = anvil.Log.ERROR;
public LoggingPreferences(Zone parent)
{
super(parent);
}
public void setProvider(String provider)
{
if (provider != null) {
_provider = provider;
}
}
public String getProvider()
{
return _provider;
}
public void setFormat(String format)
{
if (format != null) {
_format = format;
}
}
public String getFormat()
{
return _format;
}
public void setTarget(String target)
{
if (target != null) {
_target = target;
}
}
public String getTarget()
{
return _target;
}
public void setLevel(int level)
{
_level = level;
}
public int getLevel()
{
return _level;
}
public int getType()
{
return LOGGING;
}
public String[] getPreferences()
{
return PREFERENCES;
}
public Object getPreference(String name)
{
if (name.equalsIgnoreCase("provider")) {
return _provider;
} else if (name.equalsIgnoreCase("format")) {
return _format;
} else if (name.equalsIgnoreCase("target")) {
return _target;
} if (name.equalsIgnoreCase("level")) {
return Log.SEVERITY[_level];
}
return super.getPreference(name);
}
public boolean setPreference(String name, String value)
{
if (name.equalsIgnoreCase("provider")) {
setProvider(value);
} else if (name.equalsIgnoreCase("format")) {
setFormat(value);
} else if (name.equalsIgnoreCase("target")) {
setTarget(value);
} else if (name.equalsIgnoreCase("level")) {
int n = Log.SEVERITY.length;
for(int i=0; i<n; i++) {
if (Log.SEVERITY[i].equalsIgnoreCase(value)) {
setLevel(i);
break;
}
}
} else {
return super.setPreference(name, value);
}
return true;
}
public Log createLog(String name)
{
LogDevice dev;
if (_provider.equalsIgnoreCase("basic")) {
dev = new anvil.server.basic.BasicLogDevice();
} else if (_provider != null) {
try {
dev = (LogDevice)Class.forName(_provider).newInstance();
} catch (ConfigurationError e) {
e.fillInStackTrace();
throw e;
} catch (Throwable t) {
throw new ConfigurationError("Couldn't create log device: "+_provider+", reason: "+t.toString());
}
} else {
dev = new anvil.server.basic.BasicLogDevice();
}
dev.initialize(getParent());
Log log = new Log(name, dev);
log.setSeverity(_level);
return log;
}
}