Re: [BUGS]log can not be output when use DataSource - Mailing list pgsql-jdbc
From | Chen Huajun |
---|---|
Subject | Re: [BUGS]log can not be output when use DataSource |
Date | |
Msg-id | 50FA1403.7020301@cn.fujitsu.com Whole thread Raw |
In response to | Re: [BUGS]log can not be output when use DataSource (dmp <danap@ttc-cmc.net>) |
Responses |
Re: [BUGS]log can not be output when use DataSource
Re: [BUGS]log can not be output when use DataSource |
List | pgsql-jdbc |
> Yes, it might be better, but I don't see how it fails otherwise ? Let me describe it again 1)Driver has a global LogLevel setting by the following org.postgresql.Driver.setLogLevel() 2)each Connection has their own LogLevel,default is the same as Driver's,and can be rewrited by url,for example jdbc:postgresql://localhost/test?loglevel=1 protected AbstractJdbc2Connection(HostSpec[] hostSpecs, String user, String database, Properties info, String url) throwsSQLException { ... int logLevel = Driver.getLogLevel(); String connectionLogLevel = info.getProperty("loglevel"); if (connectionLogLevel != null) { try { logLevel = Integer.parseInt(connectionLogLevel); } catch (Exception l_e) { // XXX revisit // invalid value for loglevel; ignore it } } ... } 3)BaseDataSource.getConnection() will append loglevel to url regardless BaseDataSource.setLogLevel() was not be called So,the url should be as the following,and the Connection's log is off. jdbc:postgresql://localhost/test?loglevel=0 -- Best Regards, Chen Huajun (2013/01/18 1:22), dmp wrote: > Also is logLevel expected in the DriverManager.getConnection(getUrl(), user, password)? > > According to the API jdbc:subprotocol:subname is expected and > many of the other parameters seem to not be optionally applied like loginTimeout, and socketTimeout like logLevel. > > I'm also not inclinded to understand how this is a bug and fails > to not log, though may not report the parameter properly unless > the user does setLogLevel(). > > danap. > > > Dave Cramer wrote: > > Yes, it might be better, but I don't see how it fails otherwise ? > > > > Dave Cramer > > > > dave.cramer(at)credativ(dot)ca > > http://www.credativ.ca > > > > > > On Thu, Jan 17, 2013 at 5:42 AM, Chen Huajun <chenhj@cn.fujitsu.com > > <mailto:chenhj@cn.fujitsu.com>> wrote: > > > > > > > It's early here but I can't see how this makes it work. It > > appears that the code that is being replaced is exactly the same > > except that there is an if statement in front of it ? > > > > > > > > > > org.postgresql.Driver.__setLogLevel(org.postgresql.__Driver.DEBUG); > > > > here the JVM level's LogLevel is set to be DEBUG. > > > > > > > > > DataSource source = (DataSource)new > > InitialContext().lookup("__DataSource"); > > > Connection con = source.getConnection(); > > > > source.getConnection() > > -->DriverManager.__getConnection(getUrl(), user, password) > > ->getUrl() > > sb.append("&loglevel=").__append(logLevel); > > > > here the Connection's LogLevel is set to be the initial value 0(*) > > via URL, > > although nobody set DataSource's LogLevel by calling > > BaseDataSource.setLogLevel(). > > > > I think it's better append "loglevel" to URL only when > > BaseDataSource.setLogLevel() was called. > > so a Connection created by DataSource.getConnection() can inherit > > JVM level's LogLevel setting > > just like which one created by DriverManager.getConnection(). > > > > > > *)0 is the initial value and not a valid LogLevel, > > valid values are INFO (1) and DEBUG (2). > > > > > > -- > > Best Regards, > > Chen Huajun > > (2013/01/17 17:19), Dave Cramer wrote: > > > > It's early here but I can't see how this makes it work. It > > appears that the code that is being replaced is exactly the same > > except that there is an if statement in front of it ? > > > > > > > > Dave Cramer > > > > dave.cramer(at)credativ(dot)ca > > http://www.credativ.ca > > > > > > On Wed, Jan 16, 2013 at 11:47 PM, Chen Huajun > > <chenhj@cn.fujitsu.com <mailto:chenhj@cn.fujitsu.com> > > <mailto:chenhj@cn.fujitsu.com <mailto:chenhj@cn.fujitsu.com>>__> > > wrote: > > > > Hi, > > > > In the following code,log can not be output as expected. > > > > ------------------------------__------- > > > > org.postgresql.Driver.__setLogLevel(org.postgresql.__Driver.DEBUG); > > DataSource source = (DataSource)new > > InitialContext().lookup("__DataSource"); > > Connection con = source.getConnection(); > > ------------------------------__------- > > > > It's seems to be a problem, > > I have made a small patch to fix it. > > Hopefully this useful. > > > > -- > > Best Regards, > > Chen Huajun > > -- > > Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org > > <mailto:pgsql-jdbc@postgresql.org> > > <mailto:pgsql-jdbc@postgresql.__org > > <mailto:pgsql-jdbc@postgresql.org>>) > > > > To make changes to your subscription: > > http://www.postgresql.org/__mailpref/pgsql-jdbc > > <http://www.postgresql.org/mailpref/pgsql-jdbc> > >
pgsql-jdbc by date: