Re: [BUGS]log can not be output when use DataSource - Mailing list pgsql-jdbc

From Dave Cramer
Subject Re: [BUGS]log can not be output when use DataSource
Date
Msg-id CADK3HHL=XLcu3LH7CRT3c-JB8ScrBrW=O-0zDum17zrWUKKEzw@mail.gmail.com
Whole thread Raw
In response to Re: [BUGS]log can not be output when use DataSource  (Chen Huajun <chenhj@cn.fujitsu.com>)
List pgsql-jdbc
Chen,

OK, perhaps the source of the confusion is your patch.

-        sb.append("&loglevel=").append(logLevel);
+        if (logLevel != 0) {
+            sb.append("&loglevel=").append(logLevel);
+        }

All this appears to do to me is: change the behaviour from always appending the logLevel regardless of value to doing it only if it is non-zero
Which should not change the behaviour unless the logLevel is 0 which is the default 

Dave



Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca


On Fri, Jan 18, 2013 at 10:33 PM, Chen Huajun <chenhj@cn.fujitsu.com> wrote:
> 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) throws SQLException
    {
...
               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>








--
Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-jdbc

pgsql-jdbc by date:

Previous
From: Chen Huajun
Date:
Subject: Re: [BUGS]log can not be output when use DataSource
Next
From: dmp
Date:
Subject: Re: [BUGS]log can not be output when use DataSource