1
0
Commit Graph

35 Commits

Author SHA1 Message Date
Richard A. Sitze
b122313d94 1. Wrapped System.getProperties with doPrivileged.
2. Moved catch.  If System properties cannot be loaded,
    then don't abandon effort, but go on to loading
    properties file.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138942 13f79535-47bb-0310-9956-ffa450edef68
2002-12-12 19:23:34 +00:00
Craig R. McClanahan
4e0ad3c8ff It helps if you actually add the new file as well.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138941 13f79535-47bb-0310-9956-ffa450edef68
2002-11-23 03:50:13 +00:00
Craig R. McClanahan
2783ad6bc1 Deprecte Log4JCategoryLog (because Log4J has deprecated o.a.l.Category),
and replace it with a new Log4JLogger implementation that wraps an
o.a.l.Logger instance instead.

Update docco to reflect that Log4J support is now for version 1.2 or later
(when o.a.l.Logger was introduced).

PR:  13118
Submitted by:  Paul Campbell <seapwc at halycon.com>


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138940 13f79535-47bb-0310-9956-ffa450edef68
2002-11-23 03:49:40 +00:00
Craig R. McClanahan
e0be9b7850 Add a getCategory() method that returns the underlying Log4J Category
instance, analogous to the getLogger() method on JDK14Logger.

PR:  Bugzilla 14155
Submitted by:  Chris Hagmann <ch at ipin.com>


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138939 13f79535-47bb-0310-9956-ffa450edef68
2002-11-23 03:25:33 +00:00
Craig R. McClanahan
03645a6b4a Update remaining documentation that says the default Log implementation
is NoOpLog.  It was changed to SimpleLog a while back.

PR:  Bugzilla #14571
Submitted by:  David M. Karr <dmkarr@earthlink.net>


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138938 13f79535-47bb-0310-9956-ffa450edef68
2002-11-23 03:07:58 +00:00
Richard A. Sitze
a661c64c6d *** empty log message ***
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138937 13f79535-47bb-0310-9956-ffa450edef68
2002-11-11 16:52:54 +00:00
Richard A. Sitze
3a5b034cef - code cleanup, refactoring, and corrected a few undiscoved bugs..
- Bugzilla 13157 - Log4j takes undue precedence over Log override.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138927 13f79535-47bb-0310-9956-ffa450edef68
2002-10-19 17:25:18 +00:00
Richard A. Sitze
f76f188696 Dump stack trace through logger, not stdout
(preservers sequence of buffered output).


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138926 13f79535-47bb-0310-9956-ffa450edef68
2002-10-19 17:19:05 +00:00
Richard A. Sitze
72e4cef37b javadoc cleanup
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138917 13f79535-47bb-0310-9956-ffa450edef68
2002-09-27 02:16:44 +00:00
Richard A. Sitze
c53d47efc9 javadoc cleanup
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138916 13f79535-47bb-0310-9956-ffa450edef68
2002-09-27 02:14:57 +00:00
Richard A. Sitze
5b662d1710 Correct 2 problems:
1. getContextClassLoader is priviledged, protect for J2EE environs.
2. getContextClassLoader can & does return null.  Code wasn't
    checking for this properly.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138913 13f79535-47bb-0310-9956-ffa450edef68
2002-08-30 03:23:34 +00:00
Richard A. Sitze
21e56ae851 Subtle little bug... if we cannot find OUR Log4J wrapper, then
we cannot support Log4j...


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138904 13f79535-47bb-0310-9956-ffa450edef68
2002-08-09 18:47:34 +00:00
Richard A. Sitze
52ba50f028 bug 10480: handle null message without throwing NPE
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138897 13f79535-47bb-0310-9956-ffa450edef68
2002-07-17 16:42:40 +00:00
Craig R. McClanahan
d3b8b85e48 Make SimpleLog check for its "simplelog.properties" resource in the thread
context class loader, if present, while using the same trick LogFactory
does to protect JDK 1.1 compatibility.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138895 13f79535-47bb-0310-9956-ffa450edef68
2002-06-15 20:54:48 +00:00
Craig R. McClanahan
08ee4c68c3 Cosmetic changes in comments, to keep the JDK 1.4 standard JavaDoc
doclet from whining.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138894 13f79535-47bb-0310-9956-ffa450edef68
2002-06-15 18:13:02 +00:00
Richard A. Sitze
6b15ddfe75 Resolve NullPointerExceptions
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138893 13f79535-47bb-0310-9956-ffa450edef68
2002-06-11 22:47:21 +00:00
Richard A. Sitze
2a26463d60 Correct new method name
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138892 13f79535-47bb-0310-9956-ffa450edef68
2002-06-11 22:35:33 +00:00
Richard A. Sitze
329f05ee4f Resolve NullPointerExceptions, remove redundant checks, minor refactoring to facilitate readability.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138891 13f79535-47bb-0310-9956-ffa450edef68
2002-06-11 22:34:32 +00:00
Costin Manolache
b2038dcc68 Make sure we are initialized for all constructors. Change the name of the
default appender.

I still have some problems with log4j's JMX if I construct the logger
via API ( i.e. no log4j.properties ) - but that shouldn't affect too
many people, so I'll leave it.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138888 13f79535-47bb-0310-9956-ffa450edef68
2002-06-07 00:22:54 +00:00
Costin Manolache
d7208355d3 Few fixes:
- if no log4j.properties is found, we'll construct a 'sane' config ( to be
consistent with the other loggers ). The appender must have a name ( otherwise
the JMX stuff in log4j will complain )

- fix the class name for the log4j factory


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138886 13f79535-47bb-0310-9956-ffa450edef68
2002-06-06 22:09:09 +00:00
Costin Manolache
b75a58b4af Few small (?) fixes:
- for JDK1.4, include the correct class/method. This uses a hack to
extract the information from the stack trace - probably slow, but
it's better to get the correct information.

- for log4j, check if log4j is initialized ( by checking if any appenders
are present ). Set a default configuration if it is not initialized.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138884 13f79535-47bb-0310-9956-ffa450edef68
2002-05-06 21:32:37 +00:00
Craig R. McClanahan
025dc566b9 The Jdk14Logger wrapper should not be modifying the configuration of the
underlying logger.

Submitted by:  Christophe Felix-Henry <cfelixhenry at scort.com>


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138882 13f79535-47bb-0310-9956-ffa450edef68
2002-04-29 16:48:09 +00:00
Craig R. McClanahan
6bafa3f510 Modify the logger discovery contract to perform the complete set of checks
even in environments (such as an Applet) where System.getProperty() throws
a security exception.  Previously, this was causing the checks for Log4J or
JDK 1.4 logging to be skipped.

PR:  Bugzilla #7468
Reported By:  Tim Vernum (tpv at spamcop.net)


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138881 13f79535-47bb-0310-9956-ffa450edef68
2002-03-31 00:31:49 +00:00
Costin Manolache
27347eec03 Patch from Richard Sitze <rsitze at us.ibm.com>.
> I've updated the Log4JCategoryLog.java to use the Log4J method Category.log
> () which allows the fully qualified class name (FQCN) of  the user's logger
> class to be passed through into Log4J.  In this case the logger class FQCN
> will be "org.apache.commons.logging.impl.Log4JCategoryLog".  This allows
> Log4J to correctly identify the location in the code from which the logger
> is being called, if required.  Without this Log4J reports that the calling
> location is ALWAYS Log4JCategoryLog.java:132.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138878 13f79535-47bb-0310-9956-ffa450edef68
2002-03-07 22:32:47 +00:00
Craig R. McClanahan
5f390b02fc When selecting the default logging implementation on a 1.4 system, ensure
that the commons-logging wrapper is also available before selecting it.
This avoids problems when using a copy of commons-logging.jar compiled on
a 1.3 system (and therefore missing the wrappe class) when executing on a
1.4 system.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138875 13f79535-47bb-0310-9956-ffa450edef68
2002-02-27 18:01:41 +00:00
Costin Manolache
078804d827 Deal with the posiblity that a commons-logging is loaded in
a loader, and the thread loader is set to point to a different
loader that doesn't include logging ( or to a wrong value ).

This happens when logging is used in certain container components,
where the thread loader will point to an app that may not
have/use logging.

XXX What's the right order ? From a 'feature' point of view,
it's better to try the thread loader first, so apps can
override the default. From a security point of view,
we should try the Class.forName() first, i.e. whatever
is loaded in the parent loader.

The current fix leaves the original order ( with thread loader
used if available ).


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138874 13f79535-47bb-0310-9956-ffa450edef68
2002-02-26 19:00:27 +00:00
James Strachan
18a4e8fa33 Added catch of security exceptions which are thrown if using commons-logging inside a container, such as the J2EE SDK server.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138873 13f79535-47bb-0310-9956-ffa450edef68
2002-02-26 04:06:22 +00:00
Costin Manolache
accadb23ed Log to stderr.
A bit of change in reading the properties - I spent some time trying to
understand what was the original intention, it was quite tricky. If the
property is not set, the old code would have defaulted everything to
true.

Added a bit of code to display only the last component of the log name,
logs without log name are hard to trace back to the source, and the full
name can make things hard to read ( at least that's my experience so
far ).

Of course, feel free to change back, I'm just trying to get things
a bit easier to use 'out of box', config can override anything.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138868 13f79535-47bb-0310-9956-ffa450edef68
2002-02-15 05:46:36 +00:00
Costin Manolache
f7489ad021 Add a mechanism to use a proxy. The default impl will first look for
a logger package, and preferably use a specialized factory, which
can provide better integration with the real logger.

The introspection is ok, but it's limited and complex.

Also, switch to SimpleLog by default - which is almost the same as
using System.err.println(). If common logging requires the user to set
properties and configurations to get the same behavior as System.err(),
why would anyone use it ?


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138867 13f79535-47bb-0310-9956-ffa450edef68
2002-02-15 05:42:35 +00:00
Costin Manolache
a42b6b9bd6 Add the second constructor to be used with Log4jFactory.
Make it final ( so the indirection can be optimized by jits )


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138866 13f79535-47bb-0310-9956-ffa450edef68
2002-02-15 03:54:19 +00:00
Costin Manolache
377a98ff3b Added a log4j specific factory. It's cleaner and goes directly
to the logger impl, without introspection. The factory can be extended
to take advantage of other log4j features ( it calls getInstance(Class)
direclty for example ) to integrate better.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138865 13f79535-47bb-0310-9956-ffa450edef68
2002-02-15 03:53:39 +00:00
Craig R. McClanahan
87cfde50b6 Fix the implementation in LogFactory and LogFactoryImpl so that it actually
works as documented.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138859 13f79535-47bb-0310-9956-ffa450edef68
2002-02-14 03:48:44 +00:00
Craig R. McClanahan
6a315e28ed Improvements to the new LogFactory APIs, based on feedback from Costin and
Jon plus some additional thought about using it in a multi-class-loader
environment (like Tomcat):

* Changed newFactory() to getFactory(), and implemented a cache of
  previously created factory instances (one per class loader).  This
  avoids potentially expensive and redundant discovery operations.

* Added convenient static getLog() method so a typical application
  component can initialize it's Log instance like this:

    Log log = LogFactory.getLog("com.mycompany.mypackage.MyClass");

* Added variants of getInstance() and getLog() that take a Class
  parameter instead of a String.  LogSource had this convenience
  feature, and there's no reason not to keep it.

* Added release() and releaseAll() methods to instruct the factory
  instances to release any cached references to other LogFactory
  or Log instances.  This is important, for example, if you put
  commons-logging.jar in Tomcat's shared "lib" directory, and then
  use the application reload facility.  The references maintained
  here would otherwise prevent garbage collection of the old
  webapp class loader once a reload takes place.

* Added a note on getInstance() that you can make no assumptions
  about whether or not the actual Log instance you get back is
  shared or not.  The actual sharability is a feature of the
  LogFactory implementation you are using, and what kind of a
  class loader environment you ae installing.

* Deprecated LogSource, but left it there to ease transition of
  existing code using it.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138858 13f79535-47bb-0310-9956-ffa450edef68
2002-02-14 00:19:03 +00:00
Craig R. McClanahan
91d58c6367 Add a new factory base class (LogFactory) and corresponding implementation
(LogFactoryImpl) that is based on the principles of the JAXP API's approach
to discovering SAXParserFactory and DocumentBuilderFactory instances.  It
addresses the technical concerns that Costin brought up in response to the
original Commons Logging 1.0 vote.

The primary new features:

* Applications can select their own LogFactory implementations, not
  just their own Log implementations.  The default LogFactoryImpl
  uses the same algorithm currently included in LogSource.

* The LogFactory implementation class can be specified by either a
  system property (org.apache.commons.logging.LogFactory), or by a
  corresponding property in a "commons-logging.properties" file found
  somewhere in the class path.

* LogFactory implementations possess optional configuration attributes,
  which are preloaded from the "commons-logging.properties" file if it
  is found.  These can be used by the factory to customize its own
  behavior as needed.

* LogFactory and Log implementation classes are loaded from the
  thread context class loader (if it is set) in a JDK 1.2 or later
  environment.  Hwoever, the entire API and default implementation should
  still work on a JDK 1.1 system.

* A specialized exception (LogConfigurationException) is thrown for things
  like missing LogFactory or Log implementation clases.  This class
  extends RuntimeException, so you normally don't have to put everything
  in try/catch blocks unless you care about dealing with this in a
  special way.

For applications currently using the pre-release version of the API, this
will typically mean replacing calls like this:

  Log log = LogSource.getInstance("foo");

with calls like this:

  Log log = LogFactory.newFactory().getInstance("foo");

unless you want to take advantage of the new capabilities.

If this factory approach is accepted, I propose that we take the actions:

* Deprecate LogSource (but leave it there for now, to assist existing
  applications in their transition)

* Consider adding a setLogFactory() method to the Log interface -- and
  the existing implementation classes -- to give them easy access to the
  configuration attributes associated with the factory.

* Add unit tests for the new code (it's not really been tested yet).

* Propose the revised APIs as Commons-Logging 1.0 so that apps waiting
  for a final release can know what API to depend on.

Follow-up technical discussions on this proposal should take place on
COMMONS-DEV.  (If you want to argue about who can vote for what, please
start your own thread someplace else so we can get some work done :-).


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138856 13f79535-47bb-0310-9956-ffa450edef68
2002-02-13 02:18:11 +00:00
Scott Sanders
9a529044cb Moved implementation classes to impl package, as per
Costin M.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@138852 13f79535-47bb-0310-9956-ffa450edef68
2002-02-03 01:31:29 +00:00