The more:

https://github.com/apache/logging-log4j2/tree/release-2.x/log4j-core/src/test/resources/org/apache/logging/log4j/core/appender/db/jdbc

Gary


On Thu, Dec 12, 2019 at 3:54 PM Gary Gregory <garydgreg...@gmail.com> wrote:

> On Thu, Dec 12, 2019 at 9:55 AM Ralph Goers <ralph.go...@dslextreme.com>
> wrote:
>
>> I just looked at the JDBC unit tests and surprisingly didn’t see any that
>> use a configuration file.
>>
>
> Here is a 'fancy' example (the kind of stuff I use at work):
>
>
> https://github.com/apache/logging-log4j2/blob/release-2.x/log4j-jdbc-dbcp2/src/test/resources/log4j2-jdbc-dbcp2.xml
>
> Here are some more:
>
> ;-)
>
> Gary
>
>
>>
>> Ralph
>>
>> > On Dec 12, 2019, at 7:54 AM, Matt Sicker <boa...@gmail.com> wrote:
>> >
>> > Unit tests in the log4j project. All our components have examples in
>> unit
>> > tests.
>> >
>> > On Thu, Dec 12, 2019 at 04:26 Alban Hertroys <
>> > alban.hertr...@apollovredestein.com> wrote:
>> >
>> >> "Gary Gregory" <garydgreg...@gmail.com> wrote on 2019-12-11 22:01:54:
>> >>
>> >>> CAUTION : External email. Do not click links or open  attachments
>> >>> unless you recognize the sender and know the content is safe.
>> >>>
>> >>> AFK, sorry for the top-post. Have you looked at our unit tests? There
>> >> might
>> >>> be something there to help see what the usage pattern is for JNDI.
>> >>
>> >> You mean to say I should write some Java code to test the JNDI
>> connection
>> >> as defined in the Tomcat configuration? Or are the unit tests you
>> refer to
>> >> existing code that is available somewhere?
>> >>
>> >> Either way, I have no idea which unit tests you're referring to? I'm
>> also
>> >> not quite sure what I'm looking for here, I haven't done this before
>> and I
>> >> don't write Java code on a regular basis. Just created a few snippets
>> to
>> >> do small stuff here and there, such as this case where we're wrapping a
>> >> servlet to have some logging of HTTP context information to a database
>> >> table.
>> >>
>> >> There's no requirement here to do the logging through JNDI either; we
>> used
>> >> a direct connection through log4j.xml previously and that had some
>> issues
>> >> (mostly losing connection when the DB server got kicked). JNDI just
>> seemed
>> >> to be the easiest way to set up a connection pool for the JDBCAppender,
>> >> but now it's starting to look like JNDI is anything but.
>> >>
>> >> Regards,
>> >> Alban.
>> >>
>> >>
>> >>> On Tue, Dec 10, 2019, 06:02 Alban Hertroys <
>> >>> alban.hertr...@apollovredestein.com> wrote:
>> >>>
>> >>>> Hi,
>> >>>>
>> >>>> We're having a lot of trouble getting the JDBCAppender to write to
>> our
>> >>>> PostgreSQL database. There's probably a configuration error
>> somewhere,
>> >> but
>> >>>> we haven't been able to find it. And I have been searching and trying
>> >> for
>> >>>> several days now, with no progress at all.
>> >>>> Even though we specify a connection URL in the JDNI source (see
>> >> below), it
>> >>>> always ends with the JDBCAppender complaining that:
>> >>>>        java.sql.SQLException: Cannot create JDBC driver of class ''
>> >> for
>> >>>> connect URL 'null'
>> >>>>
>> >>>> The Appender should write the data to our database at server
>> "foobar",
>> >>>> database "logging-tst". Using the same credentials in SquirrelSQL,
>> >> with
>> >>>> the same JDBC driver, I can connect to that database and query the
>> >> table
>> >>>> specified in the log4j.xml (schema: "logging", table: "usage"; names
>> >> being
>> >>>> case-insensitive).
>> >>>>
>> >>>> Any pointers would be appreciated.
>> >>>>
>> >>>> Environment:
>> >>>> - Centos 7
>> >>>> - Apache Tomcat 8.5.32
>> >>>> - log4j-2.11
>> >>>>
>> >>>> We created a servlet HTTP filter into a JAR, compiled against:
>> >>>> WEB-INF/lib:
>> >>>>        log4j-api-2.11.0.jar  log4j-core-2.11.0.jar
>> >>>>        servlet-api.jar
>> >>>>
>> >>>> This servlet put()'s certain fields into the ThreadContext, which we
>> >> then
>> >>>> attempt to access through %X{...} in the log4j2.xml, appending those
>> >>>> fields as a
>> >>>> row to an existing table in our database.
>> >>>> We had this set-up working previously with log4j-1.something in an MS
>> >> SQL
>> >>>> '05
>> >>>> DB, all on Windows 2003 server (which we are migrating away from due
>> >> to
>> >>>> performance issues).
>> >>>>
>> >>>> Files within the web application:
>> >>>> WEB-INF/lib/
>> >>>>        log4j-1.2-api-2.11.0.jar  log4j-api-2.11.0.jar
>> >>>> log4j-core-2.11.0.jar  log4j-jcl-2.11.0.jar  log4j-jul-2.11.0.jar
>> >>>> log4j-slf4j-impl-2.11.0.jar  log4j-web-2.11.0.jar
>> >>>>        postgresql-jdbc.jar
>> >>>>
>> >>>>
>> >>>> META-INF/context.xml:
>> >>>> ---------------------
>> >>>> <?xml version="1.0" encoding="utf-8"?>
>> >>>> <context>
>> >>>>    <resource
>> >>>>        name="jdbc/loggingtst"
>> >>>>        auth="Container"
>> >>>>        type="javax.sql.DataSource"
>> >>>>        username="*****"
>> >>>>        password="*****"
>> >>>>        driverClassName="org.postgresql.Driver"
>> >>>>        url="jdbc:postgresql://foobar:5432/logging-tst"
>> >>>>        maxTotal="20"
>> >>>>        maxIdle="10"
>> >>>>    />
>> >>>> </context>
>> >>>>
>> >>>>
>> >>>> WEB-INF/classes/log4j2.xml:
>> >>>> ---------------------------
>> >>>> <?xml version="1.0" encoding="UTF-8"?>
>> >>>> <Configuration status="WARN">
>> >>>>        ...
>> >>>>    <Appenders>
>> >>>>                ...
>> >>>>        <JDBC name="DBAppender" tableName="logging.usage">
>> >>>>            <DataSource jndiName="java:/comp/env/jdbc/loggingtst"/>
>> >>>>            <Column name="servername"   pattern="%X{servername}"/>
>> >>>>            <Column name="fex"          pattern="%X{focexec}"/>
>> >>>>            <Column name="parameters"   pattern="%X{parameters}"/>
>> >>>>            <Column name="username"     pattern="%X{username}"/>
>> >>>>            <Column name="duration"     pattern="%X{duration}"/>
>> >>>>            <Column name="user_agent"   pattern="%X{user-agent}"/>
>> >>>>        </JDBC>
>> >>>>    </Appenders>
>> >>>>    <Loggers>
>> >>>>                ...
>> >>>>        <Logger name="LogFilter" level="info" additivity="false">
>> >>>>            <AppenderRef ref="DBAppender"/>
>> >>>>        </Logger>
>> >>>>
>> >>>>        <Root level="error">
>> >>>>            <AppenderRef ref="sysout" />
>> >>>>        </Root>
>> >>>>    </Loggers>
>> >>>>
>> >>>> </Configuration>
>> >>>>
>> >>>>
>> >>>> WEB-INF/web.xml:
>> >>>> ----------------
>> >>>>  ...
>> >>>>  <resource-ref>
>> >>>>    <description>PostgreSQL logging table</description>
>> >>>>    <res-ref-name>jdbc/loggingtst</res-ref-name>
>> >>>>    <res-type>javax.sql.DataSource</res-type>
>> >>>>    <res-auth>Container</res-auth>
>> >>>>  </resource-ref>
>> >>>>  ...
>> >>>>
>> >>>> With this, catalina.out contains:
>> >>>>
>> >>>> 2019-12-09 17:38:16,460 localhost-startStop-1 ERROR
>> >> JdbcDatabaseManager
>> >>>> JdbcManager{name=FexAppender, bufferSize=0, tableName=logging.usage,
>> >>>> columnConfigs=[{ name=servername, layout=%X{servername},
>> literal=null,
>> >>>> timestamp=false }, { name=fex, layout=%X{focexec}, literal=null,
>> >>>> timestamp=false }, { name=parameters, layout=%X{parameters},
>> >> literal=null,
>> >>>> timestamp=false }, { name=username, layout=%X{username},
>> literal=null,
>> >>>> timestamp=false }, { name=duration, layout=%X{duration},
>> literal=null,
>> >>>> timestamp=false }, { name=user_agent, layout=%X{user-agent},
>> >> literal=null,
>> >>>> timestamp=false }], columnMappings=[]} Could not perform database
>> >> startup
>> >>>> operations: java.sql.SQLException: Cannot create JDBC driver of class
>> >> ''
>> >>>> for connect URL 'null' java.sql.SQLException: Cannot create JDBC
>> >> driver of
>> >>>> class '' for connect URL 'null'
>> >>>>        at
>> >>>>
>> >>>>
>> >>> org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory
>> >>> (BasicDataSource.java:2186)
>> >>>>        at
>> >>>>
>> >>>> org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource
>> >>> (BasicDataSource.java:2066)
>> >>>>        at
>> >>>>
>> >>>> org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection
>> >>> (BasicDataSource.java:1525)
>> >>>>        at
>> >>>>
>> >>>>
>> >>>
>> >>
>> >>
>> org.apache.logging.log4j.core.appender.db.jdbc.DataSourceConnectionSource.getConnection
>> >>> (DataSourceConnectionSource.java:51)
>> >>>>        at
>> >>>>
>> >>>>
>> >>>
>> >>
>> >>
>> org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.startupInternal
>> >>> (JdbcDatabaseManager.java:85)
>> >>>>        at
>> >>>>
>> >>>>
>> >>>
>> >>
>> org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager.startup
>> >>> (AbstractDatabaseManager.java:81)
>> >>>>        at
>> >>>>
>> >>>>
>> >>>
>> org.apache.logging.log4j.core.appender.db.AbstractDatabaseAppender.start
>> >>> (AbstractDatabaseAppender.java:106)
>> >>>>        at
>> >>>>
>> >>>> org.apache.logging.log4j.core.config.AbstractConfiguration.start
>> >>> (AbstractConfiguration.java:265)
>> >>>>        at
>> >>>>
>> >>>> org.apache.logging.log4j.core.LoggerContext.setConfiguration
>> >>> (LoggerContext.java:547)
>> >>>>        at
>> >>>>
>> >>
>> org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:263)
>> >>>>        at
>> >>>>
>> >>>> org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext
>> >>> (Log4jContextFactory.java:240)
>> >>>>        at
>> >>>>
>> >>>> org.apache.logging.log4j.core.config.Configurator.initialize
>> >>> (Configurator.java:158)
>> >>>>        at
>> >>>>
>> >>>>
>> >>> org.apache.logging.log4j.web.Log4jWebInitializerImpl.initializeNonJndi
>> >>> (Log4jWebInitializerImpl.java:168)
>> >>>>        at
>> >>>>
>> >>>> org.apache.logging.log4j.web.Log4jWebInitializerImpl.start
>> >>> (Log4jWebInitializerImpl.java:110)
>> >>>>        at
>> >>>>
>> >>>>
>> >>>
>> org.apache.logging.log4j.web.Log4jServletContainerInitializer.onStartup
>> >>> (Log4jServletContainerInitializer.java:57)
>> >>>>        at
>> >>>>
>> >>>> org.apache.catalina.core.StandardContext.startInternal
>> >>> (StandardContext.java:5245)
>> >>>>        at
>> >>>> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>> >>>>        at
>> >>>>
>> >>>> org.apache.catalina.core.ContainerBase.addChildInternal
>> >>> (ContainerBase.java:754)
>> >>>>        at
>> >>>>
>> >> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730)
>> >>>>        at
>> >>>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
>> >>>>        at
>> >>>>
>> >>>>
>> >>
>> >>
>> org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:629)
>> >>>>        at
>> >>>>
>> >>>> org.apache.catalina.startup.HostConfig$DeployDescriptor.run
>> >>> (HostConfig.java:1839)
>> >>>>        at
>> >>>>
>> >> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>> >>>>        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>> >>>>        at
>> >>>>
>> >>>> java.util.concurrent.ThreadPoolExecutor.runWorker
>> >>> (ThreadPoolExecutor.java:1149)
>> >>>>        at
>> >>>>
>> >>>> java.util.concurrent.ThreadPoolExecutor$Worker.run
>> >>> (ThreadPoolExecutor.java:624)
>> >>>>        at java.lang.Thread.run(Thread.java:748)
>> >>>> Caused by: java.lang.NullPointerException
>> >>>>        at org.postgresql.Driver.parseURL(Driver.java:551)
>> >>>>        at org.postgresql.Driver.acceptsURL(Driver.java:472)
>> >>>>        at java.sql.DriverManager.getDriver(DriverManager.java:299)
>> >>>>        at
>> >>>>
>> >>>>
>> >>> org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory
>> >>> (BasicDataSource.java:2171)
>> >>>>        ... 26 more
>> >>>>
>> >>>> (Ignore below company statement)
>> >>>>
>> >>>>
>> >>>>
>> >>>> Alban  Hertroys
>> >>>> D: +31 (0)53 4 888 888  | T: +31 (0)53 4888 888 | E:
>> >>>> alban.hertr...@apollovredestein.com
>> >>>> Apollo Vredestein B.V.| Ir. E.L.C. Schiffstraat 370, 7547 RD
>> Enschede,
>> >> The
>> >>>> Netherlands
>> >>>> Chamber of Commerce number: 34223268
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> The information contained in this e-mail is intended solely for the
>> >> use of
>> >>>> the
>> >>>> individual or entity to whom it is addressed. If you are not the
>> >> intended
>> >>>> recipient, you are hereby notified that any disclosure, copying,
>> >>>> distribution
>> >>>> or action in relation to the contents of this information is strictly
>> >>>> prohibited and may be unlawful and request you to delete this message
>> >> and
>> >>>> any
>> >>>> attachments and advise the sender by return e-mail. The
>> >> confidentiality of
>> >>>> this
>> >>>> message is not warranted. Apollo Vredestein and its subsidiaries rule
>> >> out
>> >>>> any
>> >>>> and every liability resulting from this or any other electronic
>> >>>> transmission
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>           Please consider the environment before printing this e-mail
>> >>>>
>> >>>>
>> >>>> ---------------------------------------------------------------------
>> >>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
>> >>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>> >>>>
>> >>>>
>> >>
>> >>
>> >> Alban  Hertroys
>> >> D: +31 (0)53 4 888 888  | T: +31 (0)53 4888 888 | E:
>> >> alban.hertr...@apollovredestein.com
>> >> Apollo Vredestein B.V.| Ir. E.L.C. Schiffstraat 370, 7547 RD Enschede,
>> The
>> >> Netherlands
>> >> Chamber of Commerce number: 34223268
>> >>
>> >>
>> >>
>> >>
>> >> The information contained in this e-mail is intended solely for the
>> use of
>> >> the
>> >> individual or entity to whom it is addressed. If you are not the
>> intended
>> >> recipient, you are hereby notified that any disclosure, copying,
>> >> distribution
>> >> or action in relation to the contents of this information is strictly
>> >> prohibited and may be unlawful and request you to delete this message
>> and
>> >> any
>> >> attachments and advise the sender by return e-mail. The
>> confidentiality of
>> >> this
>> >> message is not warranted. Apollo Vredestein and its subsidiaries rule
>> out
>> >> any
>> >> and every liability resulting from this or any other electronic
>> >> transmission
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>           Please consider the environment before printing this e-mail
>> >>
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
>> >> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>> >>
>> >> --
>> > Matt Sicker <boa...@gmail.com>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>>
>>

Reply via email to