Hello Fumin,

There is indeed plenty of room for improvement in the Log4j documentation.
We will appreciate it if you can contribute these improvements in the form
of a PR. Maintainers can review and, if found to be appropriate, merge your
changes.

Kind regards.

On Mon, Aug 7, 2023 at 8:02 PM Fumin Zhou <fuminz...@crd.com> wrote:

> Hi,
>
> This online doc: Log4j – Configuring Log4j 2 (apache.org)<
> https://logging.apache.org/log4j/2.x/manual/configuration.html> describes
> “Automatic Configuration”:
>
> “
>
> Log4j has the ability to automatically configure itself during
> initialization. When Log4j starts it will locate all the
> ConfigurationFactory plugins and arrange them in weighted order from
> highest to lowest. As delivered, Log4j contains four ConfigurationFactory
> implementations: one for JSON, one for YAML, one for properties, and one
> for XML.
> 1.     Log4j will inspect the "log4j2.configurationFile" system property
> and, if set, will attempt to load the configuration using the
> ConfigurationFactory that matches the file extension. Note that this is not
> restricted to a location on the local file system and may contain a URL.
> 2.     If no system property is set the properties ConfigurationFactory
> will look for log4j2-test.properties in the classpath.
> 3.     If no such file is found the YAML ConfigurationFactory will look
> for log4j2-test.yaml or log4j2-test.yml in the classpath.
> 4.     If no such file is found the JSON ConfigurationFactory will look
> for log4j2-test.json or log4j2-test.jsn in the classpath.
> 5.     If no such file is found the XML ConfigurationFactory will look for
> log4j2-test.xml in the classpath.
> 6.     If a test file cannot be located the properties
> ConfigurationFactory will look for log4j2.properties on the classpath.
> 7.     If a properties file cannot be located the YAML
> ConfigurationFactory will look for log4j2.yaml or log4j2.yml on the
> classpath.
> 8.     If a YAML file cannot be located the JSON ConfigurationFactory will
> look for log4j2.json or log4j2.jsn on the classpath.
> 9.     If a JSON file cannot be located the XML ConfigurationFactory will
> try to locate log4j2.xml on the classpath.
> 10.   If no configuration file could be located the DefaultConfiguration
> will be used. This will cause logging output to go to the console.
> ”
>
> This looks like a flow diagram, if one does not match, then move down to
> next Decision Tree Node.
> So jumping to the end, a user can easily get a feeling that if someone
> made a mistake in one of the settings, then probably it would default to
> the 10, a default configuration – logging to Console would be happening.
>
> But is it true?
> If at the first Decision Tree Node, there is something set for System
> Property “log4j2.configurationFile”, but for whatever reasons, typo on the
> file path, incorrect format, or wrong extension, or wrong contents,
> Configuration could not succeed – I guess there could be two distinct set
> of situations, 1 is we could not get the configuration files; 2 is we could
> get to the file, but contents of the file throws up something we do not
> expect.  – the 2nd set actually would not be different to any of the
> subsequent decision tree nodes, - we could find a configuration file, but
> we could not handle the contents, - so we will park this to a different
> topic.
>
> Getting back to decision tree node 1, if there is something set to
> “log4j2.configurationFile”, but following the value we could not locate a
> file, then what happens?
> Does it still move onto the next Decision Tree Node listed above? Or jump
> to the Decision Tree Node 10 directly?
> In “description” point of view, (some situations) could be said to be
> similar to the subsequent decision node – no such file specified in
> “log4j2.configurationFile” could be found, thus maybe it should move down
> the next decision tree node.
>
> From a different angle, it could be said to be an Exceptional case within
> the particular decision branch of the 1st Decision Tree Node, none of the
> other Decision Tree Nodes apply anymore.
>
> So do we agree there is a bit ambiguity here? Would you be able to
> determine what would be the behavior without reading into the source code?
>
> Should we refine this document section a bit to describe more clearly what
> would be the behavior?
>
>
> Fumin
>
> Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows
>
>
> The information in this e-mail communication together with any attachments
> is intended only for the person or entity to which it is addressed and may
> contain confidential and/or privileged material. If you are not the
> intended recipient of this e-mail communication, please notify us
> immediately. Any views expressed in this e-mail communication are those of
> the individual sender, unless otherwise specifically stated. Charles River
> Development does not represent, warrant or guarantee that the integrity of
> this communication has been maintained or that the communication is free of
> errors, virus or interference.
>

Reply via email to