Hi Donald,

On Mar 9, 2010, at 6:11 AM, Donald Woods wrote:

Are these junit 3.x tests?  Running under surefire?

Yes.

I run the standard junits as part of trunk builds all the time and turn off most of the logging (as I get tired of seeing all those enhancement
warnings too), by using cmdline options -

        mvn clean install -Dopenjpa.loglevel=ERROR

This does actually affect the enhancer but it doesn't affect the test runs.

The above definitely turns off everything but ERROR messages.
But, our pom.xml has special setups in them, like providing a default of -
   <openjpa.loglevel>INFO</openjpa.loglevel>

and then passing them to surefire as -
   <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-surefire-plugin</artifactId>
       <configuration>
           <argLine>${surefire.jvm.args}</argLine>
           <systemProperties>
               <property>
                   <name>openjpa.Log</name>
                   <value>DefaultLevel=${openjpa.loglevel</value>

This is what kills the properties set on the command line. When I change the above line to:

<value>DefaultLevel=${openjpa.loglevel},$ {openjpa.Log}</value>

all of the command line parameters take effect, and they are processed *after* the default level is processed.

I'll propose a patch for this, since as it is now, command line levels are disabled when running under surefire.

I'm going to see if this also allows the customization in persistence.xml also, but for my purposes the command line is all I need.

Thanks for the analysis.

Craig
                </property>
       . . .

The enhancer.xml ANT script gets "openjpa.loglevel" passed in and then
it remaps it to the expected settings as above.

A couple months back we had a Geronimo user asking about OpenJPA logging
and they were able to configure custom loglevel and Log file output in
their persistence.xml using the 1.2.1 level without problems, so it
should be doable.....


-Donald


On 3/9/10 1:21 AM, Craig L Russell wrote:
Hi Kevin,

I did a little more experimentation. There are two persistence units in
the persistence.xml: xml-persistence-unit and test.

I can override the settings of the xml-persistence-unit on the command
line.

So the settings for File, DefaultLevel, Tool, Enhance, MetaData are all
getting set properly for enhancement.

But the log settings I put into the persistence unit test are not taking effect properly. To verify that I'm using the right persistence unit, I
deliberately caused an error and the error was reported.

But even with setting openjpa.Log in the persistence unit, I still get
console logging:

Running org.apache.openjpa.persistence.identity.TestSQLBigIntegerId
TestSQLBigIntegerId 1268089380000
543 test INFO [main] openjpa.Runtime - Starting OpenJPA 1.3.0- SNAPSHOT
5763  test  INFO   [main] openjpa.jdbc.JDBC - Using dictionary class
"org.apache.openjpa.jdbc.sql.MySQLDictionary" (MySQL
5.1.41-ndb-7.1.2-beta-debug ,MySQL-AB JDBC Driver
mysql-connector-java-5.1.12 ( Revision: ${bzr.revision-id} )).
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.698 sec

I modified a test case to put the logging information into the setup
string and this changed the behavior of the logger.

   public void setUp() {
       setUp(SQLBigIntegerIdEntity.class
               , "openjpa.Log",
"File=openjpaLogger.log,DefaultLevel=INFO,SQL=TRACE,JDBC=TRACE"
               );
   }

Any ideas why adding properties to the command line or persistence.xml doesn't take effect for tests, but adding the properties to setup does
work?

Thanks,

Craig

On Mar 8, 2010, at 2:25 PM, Kevin Sutter wrote:

Hi Craig,
We have found exceptions to the rules, but the order of property
configuration is documented in this section [1] of the manual. Based on what you have provided, my guess is that some of your persistence.xml
file(s) are overriding the system properties you are trying to set.

I don't personally use the system properties, but I would guess you
need to
enclose the values in quotes.  So, I would try that for setting the
openjpa.Log property.

Good luck!
Kevin

[1]
http://openjpa.apache.org/builds/latest/docs/manual/manual.html#ref_guide_conf_specify


On Mon, Mar 8, 2010 at 2:24 PM, Craig L Russell
<[email protected]>wrote:

Hi,

I'm trying to do a few simple things with logging, and having trouble.

1. Disable WARN messages from the enhancer.

2. Get SQL TRACE messages.

I've tried unsuccessfully to get either of these to work. I'm using the
standard OpenJPA logging, and get a few hundred messages out of the
enhancer, so I know logging is basically working.

Reading everything I can about the logging system, I tried to get the
enhancer to stop logging WARN but only log ERROR:

-Dopenjpa.Log=none

I still get WARN messages; don't get any errors from the logging
system; it
looks like the enhancer is just ignoring this setting

-Dopenjpa.Log=SQL=TRACE,File=openjpaLogger.log

I get output sent to openjpaLogger.log file as expected, but nothing of
interest. Just:

11 TRACE [main] openjpa.Runtime - Default configuration information
couldn't be loaded from any configuration provider.0  TRACE  [main]
openjpa.Runtime - Default configuration information couldn't be
loaded from
any configuration provider.
17 WARN [main] openjpa.Runtime - The configuration property named
"openjpa.LogLevel" was not recognized and will be ignored, although
the name
closely matches a valid property called "openjpa.Log".
17 TRACE [main] openjpa.Runtime - Default configuration information
couldn't be loaded from any configuration provider.
2  WARN   [main] openjpa.Runtime - The configuration property named
"openjpa.LogLevel" was not recognized and will be ignored, although
the name
closely matches a valid property called "openjpa.Log".
2 TRACE [main] openjpa.Runtime - Default configuration information
couldn't be loaded from any configuration provider.
10 TRACE [main] openjpa.Runtime - Default configuration information
couldn't be loaded from any configuration provider.

And where did it get the LogLevel? I didn't set this property!

Can anyone point me in the right direction? Is the -Dopenjpa.Log
useful for
anything or do I have to use persistence.xml properties (I haven't tried
this since there are hundreds of persistence.xml files that I would
need to
fiddle).

Thanks,

Craig

Craig L Russell
Architect, Sun Java Enterprise System http://db.apache.org/jdo
408 276-5638 mailto:[email protected]
P.S. A good JDO? O, Gasp!



Craig L Russell
Architect, Sun Java Enterprise System http://db.apache.org/jdo
408 276-5638 mailto:[email protected]
P.S. A good JDO? O, Gasp!



Craig L Russell
Architect, Sun Java Enterprise System http://db.apache.org/jdo
408 276-5638 mailto:[email protected]
P.S. A good JDO? O, Gasp!

Reply via email to