It may be good if we add more status logs during initialization for all the locations where we currently try to find the config file. I remember that log4j-web prints all locations. A more compact version of that may be useful.
Config file not found is a common theme with Log4j2 on StackOverflow... On Thu, Apr 13, 2017 at 3:14 AM, Gary Gregory <[email protected]> wrote: > I wonder how tricky such a refactoring would be. I could also imagine an > enum listing all possible config locations and an API that takes an enum > var arg for where to look. The default would be look everywhere. We getting > out in left field WRT logging here... but it is still important IMO. > > Gary > > > On Apr 12, 2017 8:19 AM, "Remko Popma" <[email protected]> wrote: > > The javadoc doesn't tell the full story here, which is that the current > method searches the classpath next if the specified file doesn't exist. I > guess it returns null after exhausting all options. > > Gary wants a way to stop in the middle. > > Sent from my iPhone > > > On Apr 12, 2017, at 17:53, Mikael Ståldal <[email protected]> > wrote: > > > > Given that the Javadoc since 1,5 years ago says: > > > > @return The LoggerContext or null if an error occurred (check the status > > logger) > > > > I think it would be fine to return null if the given file is not found. > > > > On Wed, Apr 12, 2017 at 10:40 AM, Gary Gregory <[email protected]> > > wrote: > > > >> On Wed, Apr 12, 2017 at 1:31 AM, Remko Popma <[email protected]> > >> wrote: > >> > >>> I'd avoid changing the semantics of existing methods. I also favor 3. > >>> (initializeStrict?) > >>> > >> > >> Not a great method name but I am hard-pressed to come up with a better > >> name: > >> > >> - initializeStrict > >> - initializeChecked > >> - initializeValidate > >> - initializeValid > >> - initializeVerify > >> - initializeIfFound > >> - initializeCleanly > >> > >> ? > >> > >> Gary > >> > >> > >>> > >>> Sent from my iPhone > >>> > >>>> On Apr 12, 2017, at 15:00, Matt Sicker <[email protected]> wrote: > >>>> > >>>> This is a nice showcase for an Either data type similar to Optional, > >> but > >>>> with a value or an error. > >>>> > >>>>> On 12 April 2017 at 00:41, Gary Gregory <[email protected]> > >> wrote: > >>>>> > >>>>> The problem with the API as it is now is that I have no idea if the > >> API > >>>>> did what I asked it to do. It does initialize log4j all right but not > >>> in a > >>>>> way I expect. > >>>>> > >>>>> I see that we could: > >>>>> > >>>>> 1) make the current API throw an IllegalArgumentException that means > >>> "file > >>>>> not found", this keeps the API signature the same. > >>>>> 2) make the current API return null (but should it still initialize > >>> log4j > >>>>> with the 'next' config file it finds?). Not great as this would > likely > >>>>> break some apps. > >>>>> 3) add a new API that throws an exception that means 'config file not > >>>>> found' > >>>>> 4) add a new API that returns null > >>>>> > >>>>> The nice thing about throwing an exception is that you can give a > >>> detailed > >>>>> error message. Returning null tells you something is wrong, not what, > >>> still > >>>>> a mystery. > >>>>> > >>>>> So I prefer 3). > >>>>> > >>>>> Regardless, we need some better Javadocs on the existing APIs... the > >>>>> behavior is just too surprising IMO. > >>>>> > >>>>> Thoughts? > >>>>> > >>>>> Gary > >>>>> > >>>>> > >>>>> > >>>>> On Tue, Apr 11, 2017 at 10:01 PM, Ralph Goers < > >>> [email protected]> > >>>>> wrote: > >>>>> > >>>>>> That’s a good point. It is a programmatic interface so it should > >> return > >>>>>> an error. But generally we want logging to do something reasonable > >>> other > >>>>>> than fail, so it should either use whatever configuration it finds > or > >>> use > >>>>>> the default. > >>>>>> > >>>>>> Ralph > >>>>>> > >>>>>> On Apr 11, 2017, at 8:42 PM, Remko Popma <[email protected]> > >>> wrote: > >>>>>> > >>>>>> I thought Gary needed a way to detect that the specified location > >>> didn't > >>>>>> work. But perhaps a warning message is sufficient. > >>>>>> > >>>>>> Sent from my iPhone > >>>>>> > >>>>>> On Apr 12, 2017, at 10:05, Ralph Goers <[email protected]> > >>>>>> wrote: > >>>>>> > >>>>>> I'd prefer an error message but then have it continue with the > >> current > >>>>>> behavior. > >>>>>> > >>>>>> Sent from my iPhone > >>>>>> > >>>>>> On Apr 11, 2017, at 5:47 PM, Remko Popma <[email protected]> > >>> wrote: > >>>>>> > >>>>>> I can see both sides of the argument. > >>>>>> > >>>>>> Rather than changing the semantics of the existing method, what > about > >>>>>> adding a method `Configurator.initializeStrict(String, String)` > >> which > >>>>>> fails if the specified file doesn't exist? Not sure what the best > way > >>> to > >>>>>> fail is: return null or throw exception... > >>>>>> > >>>>>> Sent from my iPhone > >>>>>> > >>>>>> On Apr 12, 2017, at 9:13, Gary Gregory <[email protected]> > >> wrote: > >>>>>> > >>>>>> Hi All: > >>>>>> > >>>>>> Using 2.8.2, I call org.apache.logging.log4j. > >>>>>> core.config.Configurator.initialize(String, String) with a > >> non-exiting > >>>>>> file location. > >>>>>> > >>>>>> The method does not return null because it found another log4j2.xml > >>> file > >>>>>> on my classpath. So I get a LoggerContext but not what I expect... > >>>>>> > >>>>>> That does not sound right to me, it should return null, and then I > >> can > >>>>>> look in the status logger to see what went wrong (if I happen to > have > >>> it > >>>>>> set to DEBUG in the log4j2.xml file it did find.) > >>>>>> > >>>>>> Thoughts? > >>>>>> > >>>>>> Gary > >>>>>> > >>>>>> -- > >>>>>> E-Mail: [email protected] | [email protected] > >>>>>> Java Persistence with Hibernate, Second Edition > >>>>>> <https://www.amazon.com/gp/product/1617290459/ref=as_li_ > >>> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459& > >>> linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2 > b8> > >>>>>> > >>>>>> <http://ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l= > >>> am2&o=1&a=1617290459> > >>>>>> JUnit in Action, Second Edition > >>>>>> <https://www.amazon.com/gp/product/1935182021/ref=as_li_ > >>> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021& > >>> linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de4 > >> 18%22 > >>>> > >>>>>> > >>>>>> <http://ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l= > >>> am2&o=1&a=1935182021> > >>>>>> Spring Batch in Action > >>>>>> <https://www.amazon.com/gp/product/1935182951/ref=as_li_ > >>> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951& > >>> linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B% > >>> 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> > >>>>>> <http://ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l= > >>> am2&o=1&a=1935182951> > >>>>>> Blog: http://garygregory.wordpress.com > >>>>>> Home: http://garygregory.com/ > >>>>>> Tweet! http://twitter.com/GaryGregory > >>>>>> > >>>>>> > >>>>>> > >>>>> > >>>>> > >>>>> -- > >>>>> E-Mail: [email protected] | [email protected] > >>>>> Java Persistence with Hibernate, Second Edition > >>>>> <https://www.amazon.com/gp/product/1617290459/ref=as_li_ > >>> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459& > >>> linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2 > b8> > >>>>> > >>>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= > >> garygregory-20&l=am2&o=1&a= > >>> 1617290459> > >>>>> JUnit in Action, Second Edition > >>>>> <https://www.amazon.com/gp/product/1935182021/ref=as_li_ > >>> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021& > >>> linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de4 > >> 18%22 > >>>> > >>>>> > >>>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= > >> garygregory-20&l=am2&o=1&a= > >>> 1935182021> > >>>>> Spring Batch in Action > >>>>> <https://www.amazon.com/gp/product/1935182951/ref=as_li_ > >>> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951& > >>> linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B% > >>> 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> > >>>>> <http:////ir-na.amazon-adsystem.com/e/ir?t= > >> garygregory-20&l=am2&o=1&a= > >>> 1935182951> > >>>>> Blog: http://garygregory.wordpress.com > >>>>> Home: http://garygregory.com/ > >>>>> Tweet! http://twitter.com/GaryGregory > >>>>> > >>>> > >>>> > >>>> > >>>> -- > >>>> Matt Sicker <[email protected]> > >>>> > >>>> > >>>> > >>>> -- > >>>> Matt Sicker <[email protected]> > >>> > >> > >> > >> > >> -- > >> E-Mail: [email protected] | [email protected] > >> Java Persistence with Hibernate, Second Edition > >> <https://www.amazon.com/gp/product/1617290459/ref=as_li_ > >> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459& > >> linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2 > b8> > >> > >> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a= > >> 1617290459> > >> JUnit in Action, Second Edition > >> <https://www.amazon.com/gp/product/1935182021/ref=as_li_ > >> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021& > >> linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de4 > 18%22 > >>> > >> > >> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a= > >> 1935182021> > >> Spring Batch in Action > >> <https://www.amazon.com/gp/product/1935182951/ref=as_li_ > >> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951& > >> linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B% > >> 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> > >> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a= > >> 1935182951> > >> Blog: http://garygregory.wordpress.com > >> Home: http://garygregory.com/ > >> Tweet! http://twitter.com/GaryGregory > >> > > > > > > > > -- > > [image: MagineTV] > > > > *Mikael Ståldal* > > Senior software developer > > > > *Magine TV* > > [email protected] > > Grev Turegatan 3 | 114 46 Stockholm, Sweden | www.magine.com > > > > Privileged and/or Confidential Information may be contained in this > > message. If you are not the addressee indicated in this message > > (or responsible for delivery of the message to such a person), you may > not > > copy or deliver this message to anyone. In such case, > > you should destroy this message and kindly notify the sender by reply > > email. >
