• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Why isn't my rolling file appender working?

 
Bartender
Posts: 1971
17
  • Number of slices to send:
    Optional 'thank-you' note:
When I had SpringBoot Logback installed (SpringBoot's default logger), SpringBoot would rotate the log files as desired.

Yet, due to a compatibility problem with a library, I had to switch to SpringBoot logging to log4j.

Logging still works, but the rotating log files no longer do. It's just one log file that gets bigger and bigger.

My pom.xml includes:



My application.properties file includes:



Yet, the logs do not rotate any longer like they did when I used Spring's default logger.... Logback.

I am not sure if I need a separate log4j.properties file (I don't think so) or what exactly is off - that is, why the log files no longer rotate.

Would appreciate suggestions.
 
Saloon Keeper
Posts: 27865
196
  • Number of slices to send:
    Optional 'thank-you' note:
I hadn't realized that the "Log4j" logging in my Spring Boot app wasn't really log4j.

It would be interesting to know what your logging conflict was, since even if a part of your app was coded for Log4J, Spring Boot channels logging via SLF4J because it's almost impossible to build a major webapp where all the user code and libraries were written to the same logger.

I just spent a lot of time debugging some stuff the hard way, and this is how I customized logging in my application.yml. I don't really care for properties files if I can use YAML:


I didn't customize my logging appenders, but I'd expect to use a similar syntax.

If you do have an issue that Logback cannot live with, the important thing to attend to is that when you switch over to log4j as the external logger you have to disable Logback. Since it's a spinoff of log4j, you'd otherwise have conflicts.

This might help: https://howtodoinjava.com/spring-boot/spring-boot-log4j2-properties

The focus in that example uses a standard log4j.properties file. As with all log4j configuration, the config file should be located in the root of the application's classpath.
 
Marshal
Posts: 4533
572
  • Number of slices to send:
    Optional 'thank-you' note:
I've never worked with Spring or SpringBoot, but here's what I did for the last project which used log4j2 logging with file rotation:
I'm not sure how that would translate in to SpringBoot configuration, but maybe it can provide some clues.
 
Ron McLeod
Marshal
Posts: 4533
572
  • Number of slices to send:
    Optional 'thank-you' note:
This article looks like it might provide the answers you are looking for: HowToDoInJava: Spring Boot Log4j2.xml.  The config file looks quite similar to what I just posted.
 
Tim Holloway
Saloon Keeper
Posts: 27865
196
  • Number of slices to send:
    Optional 'thank-you' note:
AHA! A fellow XML configurer. Although seldome seen, I believe that the XML form has abilities that the properties file configurer doesn't.

Like log4.properties, log4j.xml should be located in the /src/main/resources folder (target classpath root). It's important to know that in the case of Spring Boot, you have TWO resources folders. One for the executable JAR (/src/main/resources) and one for the WAR that it runs (/src/main/resources/META-INF/resources).
 
Mike London
Bartender
Posts: 1971
17
  • Number of slices to send:
    Optional 'thank-you' note:
Thanks for the replies.

The problem (still not resolved on Windows!) was that I didn't have a log4j configuration file.

Once I created that, logging and rollover worked as expected .. on the Mac.

Yet, on Windows, the same code throws hundreds of JNDI erors like these:



In the log4j2.properties file, I read the system environment variable for the log directory like this:

property.basePath = ${sys:LOG_DIR}

Again, this works on Mac. It also creates the log file itself on Windows (so it seems it's getting the right log directory from the environment variable on Windows), but then on Windows it fills the log with hundreds of JNDI errors like I posted above.

I've also tried a hard-coded full path to the log directory on Windows, but I get the same hundreds of JNDI errors.

How can this work perfectly on the Mac but not at all on Windows using the exact Tomcat and WAR file?

Baffling!!!

Suggestions?

Thanks,

-- mike

 
Tim Holloway
Saloon Keeper
Posts: 27865
196
  • Number of slices to send:
    Optional 'thank-you' note:
Judging from the sheer variety of JNDI objects not registered, I'd have to say that you haven't configured Log4j properly.

This looks like a good helper: https://www.baeldung.com/spring-boot-logback-log4j2

There are two noteworthy items in Section 3 (Log4j2). First, to MAKE SURE that Logback is not present by overriding the default Maven bundle.

Secondly, the alternative name for your log4j.properties file for reasons explained therein.
 
Mike London
Bartender
Posts: 1971
17
  • Number of slices to send:
    Optional 'thank-you' note:

Tim Holloway wrote:Judging from the sheer variety of JNDI objects not registered, I'd have to say that you haven't configured Log4j properly.

This looks like a good helper: https://www.baeldung.com/spring-boot-logback-log4j2

There are two noteworthy items in Section 3 (Log4j2). First, to MAKE SURE that Logback is not present by overriding the default Maven bundle.

Secondly, the alternative name for your log4j.properties file for reasons explained therein.



Thanks Tim.

Here is the relevant pom.xml section which disables LogBack:



On the mac, the configuration appears to be fine. I can modify values in the log4j2.properties file and the log file responds appropriately.

I have no idea what could be wrong on Windows.

I've worked through every tutorial and "AI Assistant", but no luck thus far.

There are no compile errors...the logging works (on the Mac).

Not sure how to debug/fix this problem.

Thanks,

-- mike
 
Mike London
Bartender
Posts: 1971
17
  • Number of slices to send:
    Optional 'thank-you' note:
On Windows, it looks like the logging is eventually working, but there are tons of start up messages logged that I don't see at all on the Mac. Same application.  I've tried various log4j2 things to try to suppress all these startup messages that only appear on Windows (basic log file is 350KB after these), but nothing has worked.

Reading the environment variable set in the log4j2.properties file does not work in Windows (but works fine on Mac)  --> ${sys:LOG_DIR}. This is the most disappointing of all.

Well, just wanted to post a quick update.

Thx,

- mike
 
Tim Holloway
Saloon Keeper
Posts: 27865
196
  • Number of slices to send:
    Optional 'thank-you' note:
Did you rename log4j.properties to log4j-spring.properties? Baeldung stressed that the standard log4j.properties is scanned before Spring Boot is ready for it and in particular I'm expecting that variable substitution won't work as desired if you don't account for that.

Spring Boot should be using its own expression manager to deal with those environment variables, so I'd also expect that log47-spring.properties could substitute anything given in the Spring Boot properties chain (including application.properties, command line and external properties file).
 
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |