Log4j-logfiler reducerer applikationens ydeevne?
Formindsker logning applikationens ydeevne?
Ja. Hvor meget det gør afhænger af en række faktorer; se nedenunder.
og hvordan begrænser man display-tags logs til at blive udskrevet i logfiler?
Ved at ændre ConversionPattern i logningsegenskaberne
hvorfor er ovenstående i logfilen?
Fordi:
- et sted i koden er der et kald til en Logger-metode (sandsynligvis
debug(String)
) med den besked, og - dine logningsegenskaber indstiller logningstærsklen til DEBUG for appenderen.
For at forbedre ydeevnen:
- ændre konverteringsmønsteret for at bruge billigere dato-/tidsformatering, og (vigtigere) undgå "C", "F", "L" og "M", fordi de er særligt dyre.
- ændre logningstærsklen til INFO eller ADVARSEL eller FEJL for at reducere mængden af logning,
- indsæt
Logger.debug(...)
opkald inde i enif
erklæring, der kontrollerer, at debug-logning er aktiveret. Dette sparer omkostningerne ved at samle logmeddelelsen i tilfælde, hvor det ikke er nødvendigt; Se I log4j, forbedrer det ydelsen at kontrollere isDebugEnabled før logning?. - med log4j version 2 (log4j2) er der overbelastninger på logningsmetoderne, der tager et format og parametre. Disse reducerer omkostningerne ved logning på et niveau, der er deaktiveret.
- se også på logback.
Du kan også skrue ned for logning ved Logger
niveau ... som beskrevet i log4j-dokumentationen. Faktisk besvarer dokumentationen de fleste af de spørgsmål, du stillede, og indeholder mange detaljer om emnerne logningsydelse og logkonfiguration.
Kort svar:ja, det reducerer applikationens ydeevne, da det bruger nogle CPU-cyklusser og andre ressourcer (hukommelse osv.).
Se også dette spørgsmål:log4j ydeevne