log4j - log4J 的 java.util.logging.Handler 等价物是什么

标签 log4j java.util.logging

我喜欢拦截一些(最重要的)日志消息并将它们显示在 GUI 中或检查是否记录了任何错误。通常我使用 java.util.logging ,这里使用 java.util.logging.Handlerjava.util.logging.Formatter

然而,当前项目使用 Log4J (2.x),并且每个功能都有不同的名称,并且似乎至少复杂四倍。

任何人都可以给我一些关于如何使用 Log4J 归档此类内容的提示吗:

   /**
    * <p>
    * logs error so they can be returned to the server (and tested in unit tests)
    * </p>
    * 
    * @author "Martin Krischik" <<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2944485b5d404707425b405a4a4140426947465a4c5b074a4644" rel="noreferrer noopener nofollow">[email protected]</a>>
    * @version 1.0 $Revision: 2229 $
    * @see java.util.logging.Handler
    * @since 1.0
    */
   @SuppressWarnings ("synthetic-access")
   protected final class LogHandler
      extends
         java.util.logging.Handler
   {

      /**
       * <p>
       * A very simple formatter which displays only what is relevant to end users. Developer
       * should look at the log file
       * </p>
       * 
       * @author "Martin Krischik" <<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d1bcb0a3a5b8bfffbaa3b8a2b2b9b8ba91bfbea2b4a3ffb2bebc" rel="noreferrer noopener nofollow">[email protected]</a>>
       * @version 1.0 $Revision: 2229 $
       * @see java.util.logging.Formatter
       * @since 1.0
       */
      private class LogFormatter
         extends
            java.util.logging.Formatter
      {

         /**
          * <p>
          * line separator
          * </p>
          */
         private final String lineSeparator = System.getProperty ("line.separator");

         /**
          * <p>
          * Format the given LogRecord.
          * </p>
          * 
          * @param record
          *           the log record to be formatted.
          * @return a formatted log record
          * @see java.util.logging.Formatter#format(java.util.logging.LogRecord)
          */
         @Override
         public synchronized String format (final java.util.logging.LogRecord record)
         {
            final StringBuilder retval = new StringBuilder (4096);
            final String message = this.formatMessage (record);
            final java.util.logging.Level level = record.getLevel ();

            retval.append (level.getLocalizedName ());
            retval.append (": ");
            retval.append (message);
            retval.append (this.lineSeparator);

            return retval.toString ();
         } // format
      } // LogFormatter

      /**
       * <p>
       * A very simple formatter which displays only what is relevant to end users. Developer
       * should look at the log file
       * </p>
       */
      private final DBUpdate.LogHandler.LogFormatter formatter =
         new DBUpdate.LogHandler.LogFormatter ();

      /**
       * @throws SecurityException
       *            some severity error
       * @see java.util.logging.Handler#close()
       */
      @Override
      public void close ()
         throws SecurityException
      {
         return;
      } // close

      /**
       * @see java.util.logging.Handler#flush()
       */
      @Override
      public void flush ()
      {
         return;
      } // flush

      /**
       * @param record
       *           record to log.
       * @see java.util.logging.Handler#publish(java.util.logging.LogRecord)
       */
      @Override
      public void publish (final java.util.logging.LogRecord record)
      {
         if (record.getLevel ().intValue () >= this.getLevel ().intValue ())
         {
            REST_Responce.this.errorMessages.add (this.formatter.format (record));
         } // if
         return;
      } // publish
   } // LogHandler

最佳答案

您可以尝试子类化 AbstractAppender .

关于log4j - log4J 的 java.util.logging.Handler 等价物是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25844141/

相关文章:

java - 线程 "main"中的异常 java.lang.RuntimeException : Stub , 查看了所有线程但没有用

java - 如何在 Tomcat 中禁用 java.util.logging?

java - Java 9 的 LogManager.getLogger()/Logger.getHandlers() 上缺少斜杠似乎会导致异常

java - 如何将 log4j 与 TestNG 集成?

spring - 更新pom.xml中的Spring-boot版本时出现错误?

maven - activemq-all 强制我使用 log4j slf4j 实现

java - 如何禁用/关闭 Storm 的日志记录功能

java - 将 log4j2 用于多个类

java - log4j 和 java.util.logging 有什么区别

java - 为什么未登录异常堆栈跟踪?