在不同的线程上执行每个日志记录请求

安迪897

我已经基于Observer设计模式编写了一个自定义MyLogger库。我要实现的目标是:每次调用writeLog(LOG_LEVEL,"Text")方法时,我都希望它在新线程中执行。有人可以建议实现此目标的方法是什么。就像在哪里创建线程一样。

这就是我的Logger调用的外观。

public class Logger extends Subject{
     void writeLog(String type, String message)
        {       setData(message);
                notifyy(type);
        }

}

这就是我所说的writeLog

appLogger.writeLog("ERROR", "This is error");
史蒂夫克罗斯

您可以这样使用Producer-Consumer-Pattern:

public class Logger {

    /**
     * The ExecutorService runs the Thread that processes the logs.
     */
    private final ExecutorService loggingService = Executors.newSingleThreadExecutor();

    /**
     * A queue that contains the logs.
     */
    final BlockingQueue<YourLogObject> logs = new LinkedBlockingQueue<>();

    /**
     * Creates a new Logger object and starts the Thread that processes the logs.
     */
    public Logger() {
        loggingService.submit(new Runnable() {

            @Override
            public void run() {
                try {
                    for (;;) {
                        final YourLogObject log = logs.take();

                        // setData(log.getMessage());
                        // notify(log.getLevel());
                    }
                } catch (final InterruptedException e) {
                    e.printStackTrace();
                    return;
                }
            }

        });
    }

    /**
     * Creates a new YourLogObject from the given parameters and puts it at the end of the queueu.
     */
    public void writeLog(final String level, final String message) {
        final YourLogObject log = new YourLogObject(level, message);

        try {
            logs.put(log);
        } catch (final InterruptedException e) {
            e.printStackTrace();
        }
    }

    /**
     * 
     */
    public void shutdown() {
        loggingService.shutdownNow();
    }

}

public class YourLogObject {

    private final String level;

    private final String message;

    public YourLogObject(final String level, final String message) {
        this.level = level;
        this.message = message;
    }

    public String getLevel() {
        return level;
    }

    public String getMessage() {
        return message;
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

每个请求将不同的日志框架记录在一个文件中

来自分类Dev

在不同的线程中执行每个QTModbus响应

来自分类Dev

如何为每个线程创建自己的日志记录实例?

来自分类Dev

在不同的线程上执行工作

来自分类Dev

ServerEndpoint的每个方法是否由不同的线程执行?

来自分类Dev

确保每个线程的执行

来自分类Dev

记录每个网页上对用户的所有请求

来自分类Dev

Jax-WS请求-响应有效负载日志记录中的线程安全

来自分类Dev

为什么在每个请求上执行passport.serializeUser?

来自分类Dev

为什么在每个请求上执行passport.serializeUser?

来自分类Dev

在哪里放置要在每个Laravel请求上执行的代码?

来自分类Dev

使执行contex的线程池的输出合法化,以便在scala中进行日志记录/调试

来自分类Dev

如何在相同标签下并行执行不同请求在不同从属上的作业执行

来自分类Dev

如何在相同标签下并行执行不同请求在不同从属上的作业执行

来自分类Dev

在Helidon中记录每个请求

来自分类Dev

在单独的C ++线程中记录日志?

来自分类Dev

如何在每个键有多个记录的表上执行此连接,而每个键不返回多个记录?

来自分类Dev

在AngularJS上禁用日志记录

来自分类Dev

C ++,当每个工作线程必须执行几个不同的任务时,如何为任务实现线程池

来自分类Dev

在Linux上C应用程序的DEBUG模式下执行的自定义日志记录

来自分类Dev

类中每个方法的标准日志记录

来自分类Dev

记录到每个作业的 scrapyd 日志文件

来自分类Dev

重用线程以执行不同的操作

来自分类Dev

每个请求显示不同的数据

来自分类Dev

抑制特定ActiveRecord请求的Rails日志记录

来自分类Dev

Drop-wizard请求响应日志记录

来自分类Dev

请求的API平台日志记录头

来自分类Dev

套接字请求无日志记录

来自分类Dev

使用Poco库,如何在分离器通道记录器中为每个通道设置不同的日志级别?

Related 相关文章

  1. 1

    每个请求将不同的日志框架记录在一个文件中

  2. 2

    在不同的线程中执行每个QTModbus响应

  3. 3

    如何为每个线程创建自己的日志记录实例?

  4. 4

    在不同的线程上执行工作

  5. 5

    ServerEndpoint的每个方法是否由不同的线程执行?

  6. 6

    确保每个线程的执行

  7. 7

    记录每个网页上对用户的所有请求

  8. 8

    Jax-WS请求-响应有效负载日志记录中的线程安全

  9. 9

    为什么在每个请求上执行passport.serializeUser?

  10. 10

    为什么在每个请求上执行passport.serializeUser?

  11. 11

    在哪里放置要在每个Laravel请求上执行的代码?

  12. 12

    使执行contex的线程池的输出合法化,以便在scala中进行日志记录/调试

  13. 13

    如何在相同标签下并行执行不同请求在不同从属上的作业执行

  14. 14

    如何在相同标签下并行执行不同请求在不同从属上的作业执行

  15. 15

    在Helidon中记录每个请求

  16. 16

    在单独的C ++线程中记录日志?

  17. 17

    如何在每个键有多个记录的表上执行此连接,而每个键不返回多个记录?

  18. 18

    在AngularJS上禁用日志记录

  19. 19

    C ++,当每个工作线程必须执行几个不同的任务时,如何为任务实现线程池

  20. 20

    在Linux上C应用程序的DEBUG模式下执行的自定义日志记录

  21. 21

    类中每个方法的标准日志记录

  22. 22

    记录到每个作业的 scrapyd 日志文件

  23. 23

    重用线程以执行不同的操作

  24. 24

    每个请求显示不同的数据

  25. 25

    抑制特定ActiveRecord请求的Rails日志记录

  26. 26

    Drop-wizard请求响应日志记录

  27. 27

    请求的API平台日志记录头

  28. 28

    套接字请求无日志记录

  29. 29

    使用Poco库,如何在分离器通道记录器中为每个通道设置不同的日志级别?

热门标签

归档