CLIENT STACK TRACE in Hibernate using c3p0

2019-06-04 07:16发布

This may be a duplicate of Weird Error: CLOSE BY CLIENT STACK TRACE But I've asked a new question because I don't see isLoggable method for Log. I'm using Logger class of org.apache.log4j.Logger for my log purpose.

My error is same

java.lang.Exception: DEBUG -- CLOSE BY CLIENT STACK TRACE
at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:566)
at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:234)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:470)
at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:964)

My code is

    public JSONObject getUserDetails(int id) {
    System.setProperty("net.sf.ehcache.skipUpdateCheck", "true");
    long lStartTime = new Date().getTime();
    JSONObject obj = new JSONObject();
    try (Session session = factory.openSession()) {
        Employee emp = (Employee) session.load(Employee.class, id);
        if (emp != null) {
            obj.put("id", emp.getId());
            obj.put("name", emp.getName());
        }
        long lEndTime = new Date().getTime();
        log.info("[ Personal Details ]Time elapsed For Fetching :"
                + (lEndTime - lStartTime));

    } catch (Exception e) {
        log.error(e);
    }
    return obj;
}

Edit :

My implentation is :

public class PersonalisationImpl implements PersonalisationDao {
private void close( Throwable cause ) throws SQLException
{ 
    close( cause, false ); 
}

private void close(Throwable cause, boolean b) {
    // TODO Auto-generated method stub
    assert Thread.holdsLock( this );
    if ( logger.isLoggable( MLevel.FINEST ) )
          logger.log( MLevel.FINEST, this + " closed by a client.", 
                    new Exception("DEBUG -- CLOSE BY CLIENT STACK TRACE") );
}

Where should I write the method of isLoggable method in the code and which logger class should I use?

1条回答
乱世女痞
2楼-- · 2019-06-04 07:41

you don't write an isLoggable(...) method. that already exists in the logging library and c3p0 calls it.

your problem is that you are logging at TRACE/FINEST levels, which means you are getting a lot of debugging info, including logged stack traces, that you don't want.

you need to figure out how to configure whatever logging library you are using to log only messages at INFO or above for libraries beginning with com.mchange. that's it! configure your logging so that you stop logging debug-level messages, and this will go away. there is no problem. you are just logging too much information.

查看更多
登录 后发表回答