<?xml version="1.0" encoding="UTF-8"?>
<function class="org.ametys.plugins.core.ui.script.StaticConfigurableScriptBinding">
<descriptions>
<description>
<name>getLogger</name>
<text i18n="true">PLUGINS_RUNTIME_SCRIPT_FCT_GET_LOGGER</text>
</description>
</descriptions>
<script>
var getLogger = (function() {
var LogManager = Java.type("org.apache.log4j.LogManager");
var Level = Java.type("org.apache.log4j.Level");
var AmetysHomeHelper = Java.type("org.ametys.runtime.util.AmetysHomeHelper");
var PatternLayout = Java.type("org.apache.log4j.PatternLayout");
var RollingFileAppender = Java.type("org.apache.log4j.rolling.RollingFileAppender");
var TimeBasedRollingPolicy = Java.type("org.apache.log4j.rolling.TimeBasedRollingPolicy");
var PATTERN_LAYOUT = new PatternLayout("%d %-5p [%c] (%t;%X{requestURI}) %m%n");
function getLogger(filename, category, level)
{
var logger = _getLogger(category, level);
_addAppenderIfNecessary(logger, filename);
return _createLoggerObject(logger);
}
function _getLogger(category, level)
{
var logger = LogManager.getLogger(category);
logger.setAdditivity(false);
logger.setLevel(Level.toLevel(level));
return logger;
}
function _addAppenderIfNecessary(logger, filename)
{
if (logger.getAppender(filename) == null)
{
logger.addAppender(_createAppender(filename));
}
}
function _createAppender(filename)
{
var filePattern = AmetysHomeHelper.getAmetysHome() + "/logs/" + filename + "-%d.log";
var rollingPolicy = new TimeBasedRollingPolicy();
rollingPolicy.setFileNamePattern(filePattern);
var fileAppender = new RollingFileAppender();
fileAppender.setName(filename);
fileAppender.setLayout(PATTERN_LAYOUT);
fileAppender.setRollingPolicy(rollingPolicy);
fileAppender.activateOptions();
return fileAppender;
}
function _createLoggerObject(logger)
{
function info(message)
{
print("<span style='color:RoyalBlue'>[INFO] " + message + "</span>");
logger.info(message);
}
function warn(message)
{
print("<span style='color:DarkOrange'>[WARN] " + message + "</span>");
logger.warn(message);
}
function error(message, exception)
{
print("<span style='color:Crimson'>[ERROR] " + message + "</span>");
if (exception === undefined)
{
logger.error(message);
}
else
{
logger.error(message, exception);
}
}
return {
info: info,
warn: warn,
error: error
};
}
return getLogger;
})();
</script>
</function>
With this help:
Use it like this: