tomcat 如何设置`logging.properties`客户处理程序的属性

vxf3dgd4  于 2024-01-08  发布在  其他
关注(0)|答案(1)|浏览(197)

在尝试为Tomcat创建自定义处理程序(使用java.util.logging)时,我无法找到添加自定义属性的方法。
例如,如何设置处理程序的abc属性的值?

  1. # logging.properties
  2. handlers = java.util.logging.ConsoleHandler, com.company.tomcat.JdbcHandler
  3. .handlers = java.util.logging.ConsoleHandler, com.company.tomcat.JdbcHandler
  4. com.company.tomcat.JdbcHandler.level = FINE
  5. com.company.tomcat.JdbcHandler.abc=hello

个字符

gj3fmq9x

gj3fmq9x1#

对于JDK和Tomcat,自定义处理程序必须在创建时与LogManager交互以读取解析和加载的值。您必须设置由java.util.logging. logging类定义的所有属性沿着新属性。
这里有一个例子来帮助你开始:

  1. import java.util.logging.LogManager; //Use the JUL LogManager
  2. public class JdbcHandler extends Handler {
  3. private String abc;
  4. public JdbcHandler() {
  5. final LogManager m = LogManager.getLogManager();
  6. final String p = getClass().getName(); //property prefix
  7. String lvl = m.getProperty(p + ".level"); //parse and set the level
  8. try {
  9. super.setLevel(lvl == null ? Level.ALL : Level.parse(lvl));
  10. } catch(RuntimeException failed) {
  11. this.reportError("Unable to set level", failed, ErrorManager.OPEN_FAILURE);
  12. super.setLevel(Level.ALL);
  13. }
  14. //TODO set other handler properties for formatter, filter, encoding, and errorManager.
  15. //set your property for JDK, Tomcat, etc.
  16. initAbc(m.getProperty(p + ".abc"));
  17. }
  18. //WildFly will support this way of assigning the property.
  19. public void setAbc(String abc) {
  20. initAbc(abc);
  21. }
  22. private void initAbc(String abc) {
  23. this.abc = abc;
  24. }
  25. @Override
  26. public void publish(LogRecord record) {
  27. if (!isLoggable(record) {
  28. return;
  29. }
  30. System.out.println("record " + record); // this is called
  31. }
  32. public void close() {
  33. super.setLevel(Level.OFF);
  34. }
  35. public void flush() {
  36. }
  37. }

字符串
保留公共setAbc方法是值得的,因为WildFly将使用该方法来分配属性。

展开查看全部

相关问题