Hi,
Yesterday I wrote an action to dynamically change logging levels.
Usually in application servers this is done with JMX but since I do not
use jmx I thought I'd write an action to change logging levels.
I'm sure others users would have the same requirements. In a
production system which it throwing up some problems it would be nice to
increase the logging level to find the problem and then turn down the
logging level without a server restart.
I was just wondering if it is worth including in the project.
Just someting to start a discussion.
Regards,
Thomas Ramapuram.
Ps.
I'm just including my Code so others can implement it. I just have an
action and the corresponding struts.xml entries. I have not provided
for security nor I18N. I have not added a front end either. The action
is invoked by typing the url and the prameters in the address bar eg.
(http://localhost:8080/appname/changeLevel.html?logger=org.hibernate.SQL&level=debug)
My Action (called LogControlAction)
/**
*
*/
package com.mycompany.app.webapp.action;
import org.apache.commons.logging.Log;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.appfuse.webapp.action.BaseAction;
/**
* @author thomas
*
*/
public class LogControlAction extends BaseAction {
Log log = org.apache.commons.logging.LogFactory
.getLog(LogControlAction.class);
public String lo;
public String le;
public String getLo() {
return lo;
}
public void setLo(String lo) {
this.lo = lo;
}
public String getLe() {
return le;
}
public void setLe(String le) {
this.le = le;
}
public String execute() {
Logger logger = Logger.getLogger(lo);
if (null == logger) {
saveMessage(getText("NoSuchLogger"));
return INPUT;
}
if ("debug".equalsIgnoreCase(le)) {
logger.setLevel(Level.DEBUG);
saveMessage(getText("ChangedToDebug"));
log.debug("Saved to Debug");
} else if ("info".equalsIgnoreCase(le)) {
logger.setLevel(Level.INFO);
saveMessage(getText("ChangedToInfo"));
log.debug("Saved to Info");
} else if ("error".equalsIgnoreCase(le)) {
logger.setLevel(Level.ERROR);
saveMessage(getText("ChangedToError"));
log.debug("Saved to Error");
} else if ("fatal".equalsIgnoreCase(le)) {
logger.setLevel(Level.FATAL);
saveMessage(getText("ChangedToFatal"));
log.debug("Saved to Fatal");
} else if ("warn".equalsIgnoreCase(le)) {
logger.setLevel(Level.WARN);
saveMessage(getText("ChangedToWarn"));
log.debug("Saved to Warn");
} else {
saveMessage(getText("NoSuchLevel"));
log.debug("No Such Level");
}
return SUCCESS;
}
}
Entry in struts.xml
<action name="changeLevel"
class="com.mycompany.app.webapp.action.LogControlAction">
<result name="success">/WEB-INF/pages/mainMenu.jsp</result>
</action>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]