2016-07-10 12 views
0

In unserem Unternehmen haben wir eine log4j Konfiguration haben, wie folgt:log4j: unterschiedliche Verwendung von stdout Datei/console, wenn in der Produktion/Entwicklung

Strom in der Konsole geht
log4j.rootLogger=INFO, CATALINA, stdout 

# Used only for development. 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 

# Define all the appenders 
# configurazione catalina con meteodo di rotazione in base alla size 
log4j.appender.CATALINA=org.apache.log4j.RollingFileAppender 
log4j.appender.CATALINA.File=${catalina.base}/logs/catalina. 
log4j.appender.CATALINA.Encoding=UTF-8 
log4j.appender.CATALINA.MaxFileSize=100MB 
log4j.appender.CATALINA.MaxBackupIndex=10 
log4j.appender.CATALINA.layout=org.apache.log4j.PatternLayout 
log4j.appender.CATALINA.layout.ConversionPattern=%d %p %t %c - %m%n 




# Log all JDBC parameters 
log4j.logger.org.hibernate.SQL=TRACE 
log4j.logger.com.mchange.v2.c3p0=DEBUG 

Unsere stdout, wenn wir entwickeln und in einer rotierenden Datei Appender.

Da wir unsere Dateien manuell zur Veröffentlichung in der Produktion verpacken, kommentieren wir diese 3 Zeilen und den Stdout-Teil der ersten Zeile manuell. JEDES MAL

# Used only for development. 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 

in bedeutet dabei vergessend, so dass wir eine stdout-Datei haben, die die gleichen Informationen der CATALINA Roll Datei appender enthalten wird, wird aber nicht rollen, wird so wachsen auf unbestimmte Zeit, bis Speicherplatz zu sättigen und zur gleichen Zeit nutzlos sein.

Gibt es eine Möglichkeit, eine log4j-Konfiguration zu haben, die wir nicht jedes Mal ändern müssen?

+1

Sicher ist. Passen Sie Ihren Prozess an, um solche Dinge zu automatisieren; zum Beispiel durch ** Generieren ** der log4 Konfigurationsdateien; abhängig vom Build-Ziel. Ich weiß, das ist nicht wirklich hilfreich, aber wie genau erwarten Sie von uns, dass wir Ihr Build-System reparieren? angesichts der Tatsache, dass wir nichts darüber wissen? – GhostCat

+0

Nun, Sie haben recht, es ist nicht sehr hilfreich, aber Tatsache ist, dass wir kein Build-System haben. Wir bauen es manuell und verpacken es jedes Mal manuell ... – frankieta

Antwort

1

Es gibt nur eine Antwort, die Sinn macht, wenn Sie Ihren Kommentar über die Verwendung eines Build-Systems geben: Beginnen Sie, einen jetzt zu ziehen. Wenn Sie ernsthaft über professionelle Software-Entwicklung, dann sollten Sie professionelle Prozesse verwenden.

Was Sie im Grunde sagen, ist: "Wir tun nicht die obligatorischen Dinge; und autsch, das tut weh, bitte mach den Schmerz weg".

Entschuldigung, aber die einfache Antwort darauf ist: die nur Alternative zur manuellen Verarbeitung .. ist ** Automatisierung. Also baue das, oder lebe mit den Konsequenzen, wenn du das nicht tust.

Natürlich können Sie solche Dinge nicht über Nacht tun, aber hey: Der Rest der Welt spricht über "Continuous Build" wahrscheinlich für 10+ Jahre und über "kontinuierliche Lieferung", auch bekannt als DevOps für 3+ Jahre. Und Sie haben kein eingebautes System ?!

Dies soll nicht unhöflich sein, aber es scheint, dass Ihre Software-Prozesse aus dem letzten Jahrtausend stammen; Anstatt sich darum zu kümmern, wie man dieses Symptom ... heilen kann, treten Sie besser zurück und machen eine vollständige Diagnose Ihrer kompletten Entwicklungskette. Und dann fängst du an, es zu reparieren. Sie werden wahrscheinlich viele andere kleine Probleme entdecken; Und je früher Sie anfangen, desto früher werden Sie in der Lage sein, enorme Effizienzgewinne einzufahren.

Und wissen Sie, ich glaube, es Unternehmen waren da draußen, die erfolgreichen Produkte hatten, dass irgendwann gestorben - denn früher oder später, wie manuelle Prozesse zu schrecklichen Fehlern führen, Wanzen, Kundensituationen, ...

+0

Oh, es ist überhaupt nicht unhöflich, weil es etwas ist, das ich (und nicht nur ich) aus einer langen Zeit kenne. Aber wie Sie gesagt haben, muss es eine volle Absicht tun und die Ressourcen dafür verteilen. Normalerweise werden wir nur gebeten, neue Eigenschaften zu produzieren. Und es ist traurig, ich weiß. – frankieta

+0

Der entscheidende Punkt ist, technisches Wissen in geschäftliche Begriffe zu übersetzen. Sie könnten damit beginnen, einfach zu messen, wie viel Geld Ihr Unternehmen für manuelle Aktionen ausgibt, einschließlich Kunden-Crits, die aus mangelhaften Entwicklungsprozessen kommen. Einige (die dümmeren) Manager verstehen nur Zahlen - wenn ja: geben Sie ihnen Zahlen, die eine solide Position auf solchen Werkzeugen unterstützen. Du weißt, am Ende bist du der Ingenieur; Es ist ** Ihre ** Verantwortung, sich gegenüber dem Management zu behaupten und es zumindest sehr deutlich zu machen, wie alt Ihr jetziges Setup ist. – GhostCat

+0

Akzeptierte Antwort, da ich denke, dass es die einzige sein wird, die ich von den meisten vernünftigen und professionellen Programmierern bekommen werde. Nur gute Sache ist, dass die neuen Projekte (wo ich Code nicht beitragend) herauskommen mit moderneren Konzepten (ein Gebäudesystem mit Maven mindestens) beginnen, da es einfacher ist, wenn Sie von Null schreiben und das Produkt nicht haben bereits in Produktion. Dennoch, keine Tools wie Jenkins oder ähnliches für CI. Und Überwachung auch ... eine andere Achille Ferse. – frankieta