Logging Thread Pool : Log « Language Basics « Java

Logging Thread Pool

 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  GNU General Public License for more details.
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
package org.cspoker.common.util.threading;

import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.atomic.AtomicLong;

import org.apache.log4j.Logger;

public class LoggingThreadPool extends ScheduledThreadPoolExecutor {

  public LoggingThreadPool(int corePoolSize, String name) {
    super(corePoolSize, new LoggingThreadFactory(name));

  private final ThreadLocal<Long> startTime = new ThreadLocal<Long>();
  private final AtomicLong numTasks = new AtomicLong();
  private final AtomicLong totalTime = new AtomicLong();
  private static Logger logger = Logger.getLogger(LoggingThreadPool.class);

  protected void beforeExecute(Thread t, Runnable r) {
    super.beforeExecute(t, r);
    logger.trace(String.format("Thread %s: starting %s", t, r));

  protected void afterExecute(Runnable r, Throwable t) {
    try {
      long endTime = System.nanoTime();
      long taskTime = endTime - startTime.get();
      logger.trace(String.format("Thread %s: done with %s, time=%dns", t,
          r, taskTime));
    } finally {
      super.afterExecute(r, t);

  protected void terminated() {
    try {
      if (numTasks.get()>0) {
        logger.trace(String.format("Terminated: avg time=%dns",
            totalTime.get() / numTasks.get()));
    } finally {


Related examples in the same category

1.Log levelLog level
2.Simple Log Formatter ExampleSimple Log Formatter Example
3.Log to file with FileHandler and SimpleFomatterLog to file with FileHandler and SimpleFomatter
4.Log multiple HandlersLog multiple Handlers
5.Log multiple Handlers 2Log multiple Handlers 2
6.Override LogRecord toString()Override LogRecord toString()
7.Email LoggerEmail Logger
8.Log To File with FileHandlerLog To File with FileHandler
9.Logging LevelsLogging Levels
10.Creating a Custom Log Level
11.Logging Level ManipulationLogging Level Manipulation
12.Configure LoggingConfigure Logging
13.How to write custom Log handlerHow to write custom Log handler
14.Log Client Filter
15.Log HTML Table Formatter
16.Logging Example 1Logging Example 1
17.Basic Logging Example
18.Java Log:Basic Logging Java Log:Basic Logging
19.Java log: Hierarchy loggingJava log: Hierarchy logging
20.Java log: various log methodsJava log: various log methods
21.Java log: Stream Handler DemoJava log: Stream Handler Demo
22.Java log: File Handler DemoJava log: File Handler Demo
23.Java log: Memory Handler DemoJava log: Memory Handler Demo
24.Java log: Socket Handler Demo
25.Java log: Basic logging 2Java log: Basic logging 2
26.Java log: Logging Server
27.Java log: log filterJava log: log filter
28.Java log: XML log
29.Java log: alternate XML logJava log: alternate XML log
30.Java log: Localize LoggingJava log: Localize Logging
31.Java log: Custom XML FormatterJava log: Custom XML Formatter
32.Java log: Remote Config Reader
33.Java log: Log and Window(JFrame, frame)Java log: Log and Window(JFrame, frame)
34.File Logger
35.Setting the Formatter of a Logger Handler
36.Memory Handler Demo
37.Socket Handler Demo
38.XMLFormatter based Logging
39.#define the properties for the SocketHandler
40.Custom filter
41.Using Regular Expressions based on StreamHandler
42.The Quintessential Logging Program
43.Determining If a Message Will Be Logged
44.Logging a Method Call
45.Logging an Exception
46.Minimizing the Impact of Logging Code
47.Preventing a Logger from Forwarding Log Records to Its Parent
48.Writing Log Records to a Log File
49.A file handler that appends.
50.Writing Log Records to Standard Error
51.Writing Log Records Only After a Condition Occurs
52.Create a memory handler with a memory of 100 records and dumps the records into the file my.log
53.Setting a Filter on a Logger Handler
54.Comparing Log Levels: To compare the severity of two logging levels, use Level.intValue().
55.Creating a Custom Formatter for a Logger Handler
56.Limiting the Size of a Log File
57.Limiting the Size of a Log by Using a Rotating Sequence of Files
58.Configuring Logger Default Values with a Properties File
59.Determining When the Logging Configuration Properties are Reread
60.Handling Errors While Parsing an XML File
61.An example of a program providing the functionality of logging
62.Use Logger with simple formatter and FileHandler
63.Logger with XMLFormatter and FileHandler
64.Stream Handler
65.The Patterns in FileHandler
66.Flush File Handler and Logger
67.Config Demo
69.Alternate XML by using FileHandler
70.Localized Logging
71.Define your own Custom Formatter
72.Remote ConfigReader with URLConnection
73.Window Handler: display log message in a window(JFrame)
74.Create log with package nameCreate log with package name
75.Logger Demo
76.Return a message for logging.
77.A simple wrapper around JDK logging facilities
78.A modification of the image viewer program that logs various events
79.A class helper for logging service.
80.Logging Thread