Tomcat log4j kullanıyor mu?
Apache Tomcat 8
Logging API’si Servlets Java’dan önce.ümit.artık Java tarafından sağlanan günlük API’si. Bu nedenle, size çok fazla seçenek sunmaz. E.G., Günlük seviyelerini kontrol edemezsiniz. Bununla birlikte, Apache Tomcat uygulamasında ServletContext’e yapılan çağrıların.log (String) veya genericservlet.günlük (dize) bilgi seviyesinde kaydedilir. ServletContext çağrıları.log (dize, atılabilir) veya genericservlet.Log (dize, atılabilir) şiddetli seviyede günlüğe kaydedilir.
Özet:
Bu makalede, günlüğe kaydetme amacıyla Log4J2 ile Apache Tomcat 9’u kullanmanın önemini açıklayacağım. Ayrıca, Apache Tomcat’in Log4J2 ile nasıl yapılandırılacağı hakkında adım adım bir kılavuz sağlayacağım ve üretim ortamlarında giriş yapmak için en iyi uygulamaları tartışacağım.
Anahtar noktaları:
- Apache Tomcat 9 ve Log4J2, çok çeşitli günlüğe kaydetme seçeneği ve ekleyiciler sunar
- Log4j2, basitleştirilmiş dosya haddeleme ve günlük yutma yapılandırması sağlar
- Log4J2’yi Apache Tomcat ile yapılandırmak için, gerekli kütüphaneleri sınıf yoluna ekleyin ve varsayılan günlüğü kaldırın.Özellikler Dosyası
- Tomcat 8’den başlayarak.5.4, log4j2 doğrudan Java’ya takılabildiğinden, Juli-Adapter kütüphanelerine artık gerek yok.ümit.Kerestecilik
- Üretim ortamları için, günlükleri kopyalamaktan kaçınmak, günlük rotasyonunu etkinleştirmek ve kullanılmayan apansmanları kaldırmak için Log4J2 yapılandırmasını özelleştirmeniz önerilir
- Ayrıca, farklı günlüğe kaydedicileri tek bir ekleyiciye katılmak, uygulamalardaki dağıtım sorunlarını belirlemeye yardımcı olabilir
- Sistemi kullanarak uygulamaları zorlamak için.Çıkış ve Sistem.Günlüğe kaydetmek için err, SwallowOutput özniteliğini bağlamda ekleyin.xml dosyası
- JUL Framework’ü kullanan uygulamalar, Logging_manager ortam değişkenini değiştirerek Log4J2’yi kullanacak şekilde yapılandırılabilir
- Log4J2 ile yay önyükleme kullanırken, yay-boot-starter-logging bağımlılığını hariç tutun ve Spring-boot-starter-log4j2 ekleyin
- Belirli paketler için günlüğe kaydetme seviyelerini özelleştirin ve gerektiğinde yay bayrağını devre dışı bırakın
Sorular:
- Günlük için Log4J2 ile Apache Tomcat 9’u neden kullanmayı düşünmeliyim??
Log4J2, çok çeşitli günlüğe kaydetme seçenekleri ve ekleyiciler sunar, bu da onu Tomcat’ta günlükleri yönetmek için güçlü bir araç haline getirir. - Apache Tomcat ile Log4J2’yi nasıl yapılandırırım?
Log4J2’yi Apache Tomcat ile yapılandırmak için, gerekli kütüphaneleri sınıf yoluna eklemeniz ve varsayılan günlüğü kaldırmanız gerekir.Özellikler Dosyası. - Tomcat 8’de Juli-Adapter kütüphanelerine neden gerekmiyor?.5.4 ve üstü?
Log4J2 doğrudan Java’ya takılabilir.ümit.Giriş, Juli-Adapter kütüphanelerine olan ihtiyacı ortadan kaldırma. - Üretim ortamları için önerilen günlüğü yapılandırmalar nelerdir??
Üretim ortamlarında, günlükleri kopyalamaktan kaçınmak, günlük rotasyonunu etkinleştirmek ve kullanılmayan araştırıcıları kaldırmak için Log4J2 yapılandırmasını özelleştirmeniz önerilir. - Sistemi kullanarak uygulamaları nasıl zorlayabilirim.Çıkış ve Sistem.günlüğe girme hatası?
Bağlamda SwallowOutput özniteliğini ekleyerek.XML dosyası, sistemi kullanan uygulamalar.Çıkış ve Sistem.hata günlüğe kaydedilmeye zorlanabilir. - JUL Framework’ü kullanan uygulamalar Log4J2’yi kullanacak şekilde yapılandırılabilir?
Evet, Logging_manager ortam değişkenini değiştirerek, JUL Framework’ü kullanan uygulamalar Log4J2’yi kullanacak şekilde yapılandırılabilir. - Spring Boot ile Log4j2’yi kullanmak için ne yapmalıyım?
Spring Boot ile Log4J2’yi kullanmak için, yay-boot-starter-logging bağımlılığını hariç tutun ve Spring-boot-starter-log4j2 ekleyin. - Spring Boot’taki belirli paketler için günlüğe kaydetme seviyelerini nasıl özelleştirebilirim?
Belirli paketler için kayıt seviyeleri, uygulamanın yapılandırma dosyasındaki günlük yapılandırma özelliklerini değiştirerek özelleştirilebilir. - Spring Boot’ta yay afişini devre dışı bırakmak mümkün mü??
Evet, bahar afişini yayı ayarlayarak devre dışı bırakılabilir.ana.Banner-Mode özelliği uygulamanın yapılandırma dosyasında kapalı. - Tomcat’ta varsayılan günlüğü uygulaması yerine neden log4j2 kullanmalıyım??
Log4J2, Tomcat’teki varsayılan günlüğü uygulamasına kıyasla daha esnek ve güçlü hale getiren daha geniş bir günlüğe kaydetme seçeneği ve ekran yelpazesi sunar.
Ayrıntılı cevaplar:
- Günlük için Log4J2 ile Apache Tomcat 9’u neden kullanmayı düşünmeliyim??
Log4J2 ile Apache Tomcat 9, varsayılan günlüğü uygulamasına kıyasla daha gelişmiş ve esnek bir günlük kaydı sistemi sağlar. Log4J2, günlüklerinizi etkili bir şekilde özelleştirmenize ve yönetmenize olanak tanıyan geniş bir ekran ve günlüğe kaydetme seçenekleri sunar. Log4J2’nin yapılandırmasının sadeliği ve orijinal adla günlük dosyalarını yuvarlama yeteneği, günlük yutma yapılandırmaları için çekici bir seçim haline getiriyor. Ek olarak, Log4J2’yi kullanmak, günlük seviyelerini kontrol edememe gibi sunucu uygulamalarının günlüğe kaydetme API’sının sınırlamalarını ortadan kaldırır. - Apache Tomcat ile Log4J2’yi nasıl yapılandırırım?
Log4J2’yi Apache Tomcat ile yapılandırmak basittir. İlk olarak, Tomcat Classpath’e Log4J2-Api, Log4J2-Core ve Log4J2-Appserver kitaplıklarını eklemeniz gerekir. Ardından, projenizdeki Log4J2 yapılandırma dosyasını sağlayın. Son olarak, varsayılan günlüğü kaldırın.Tomcat kurulumunuzdan özellikler dosyası. Bu adımları izlemek, Tomcat için günlük çerçevesi olarak Log4J2’yi etkinleştirecektir. - Tomcat 8’de Juli-Adapter kütüphanelerine neden gerekmiyor?.5.4 ve üstü?
Tomcat sürümleri 8.5.4 ve üstü Log4J2 ile doğrudan entegrasyon tanıttı ve Juli-Adapter kütüphanelerine olan ihtiyacı ortadan kaldırdı. Log4J2 artık doğrudan Java’ya takılabilir.ümit.Günlük, Servlets Logging API’si için sorunsuz bir yedek haline getiriyor. Bu entegrasyon, günlüğü yapılandırma işlemini basitleştirir ve günlük seviyeleri ve ekleyiciler üzerinde daha fazla kontrol sağlar. - Üretim ortamları için önerilen günlüğü yapılandırmalar nelerdir??
Üretim ortamları için Log4J2’yi yapılandırırken, çeşitli hususlar dikkate alınmalıdır. İlk olarak, Catalina’daki günlük çıkışlarını çoğaltmaktan kaçınmak önemlidir.Out Dosya ve Catalina.log dosyası. Bu, konsolonun kaldırılmasıyla elde edilebilir. İkincisi, Catalina için günlük rotasyonunu etkinleştirmeniz önerilir.Çok büyümesini önlemek için dosyayı günlüğe kaydedin. Son olarak, yönetici gibi kullanılmayan ekçilerin kaldırılması.log ve host_manager.Günlük, günlük çıkışının dışlanmasına yardımcı olabilir. Ayrıca, Catalina ve Localhost kaydediciler gibi farklı günlüğe kaydedicileri bir ekleyiciye katılmak, sorun gidermeyi basitleştirebilir ve dağıtım sorunlarını belirleyebilir. - Sistemi kullanarak uygulamaları nasıl zorlayabilirim.Çıkış ve Sistem.günlüğe girme hatası?
Sistemi kullanan uygulamaları zorlamak için.Çıkış ve Sistem.LOG için hata, SwallowOutput özniteliğini varsayılan içeriğe ekleyebilirsiniz.$ catalina_base/conft/context içinde bulunan xml dosyası.XML. Bu öznitelik Tomcat’a sistemi yönlendirmesi için talimat verir.Çıkış ve Sistem.Günlüklerde tüm çıktıların yakalanmasını sağlayarak günlük sistemine err. - JUL Framework’ü kullanan uygulamalar Log4J2’yi kullanacak şekilde yapılandırılabilir?
Evet, Temmuz (Java Util Logging) çerçevesini kullanan uygulamalar Log4J2’yi kullanacak şekilde yapılandırılabilir. SetEnv’deki Logging_manager ortam değişkenini değiştirerek.SH dosyası, değeri “-djava olarak ayarlayabilirsiniz.ümit.Kerestecilik.yönetici = org.apache.Kerestecilik.log4j.Temmuz ayında.LogManager “. Bu yapılandırma, Temmuz kullanan uygulamaların, varsayılan biçim yerine günlükleri için Log4J2 biçimini kullanmasını sağlar. - Spring Boot ile Log4j2’yi kullanmak için ne yapmalıyım?
Spring Boot ile Log4J2’yi kullanmak için, farklı başlangıç eserlerinden varsayılan yay-boot-starter-logging bağımlılığını hariç tutmanız gerekir. Bu belirtilerek yapılabilir <hariç tutmak>Bahar-boot starter-logging</hariç tutmak> Projenizin POM’sının Bağımlılıklar bölümünde.xml dosyası. Varsayılan günlüğü bağımlılığı hariç tuttuktan sonra, gerekli tüm Log4J2 bağımlılıklarını ve SLF4J bağımlılıklarını içeren Spring-Boot-starter-Log4J2 bağımlılığını ekleyebilirsiniz. SLF4J özelliklerinden hiçbirini kullanmıyorsanız, bunun yerine Log4J-Web bağımlılığını kullanabilirsiniz. - Spring Boot’taki belirli paketler için günlüğe kaydetme seviyelerini nasıl özelleştirebilirim?
Spring Boot’da, uygulamanın özelliklerinde veya YAML dosyasındaki günlük konfigürasyonunu değiştirerek günlüğü belirli paketler için özelleştirebilirsiniz. Günlük seviyelerini özelleştirmek için sözdizimi Kerestecilik.seviyesi.package_name = seviye. Örneğin, “org için hata ayıklama seviyesini ayarlamak istiyorsanız.Springframework “paketi ve” Merhaba “paketi, aşağıdaki yapılandırmayı ekleyebilirsiniz: Kerestecilik.seviyesi.org.Springframework = hata ayıklama Ve Kerestecilik.seviyesi.Merhaba = hata ayıklama. - Spring Boot’ta yay afişini devre dışı bırakmak mümkün mü??
Evet, Bahar Boot’ta yay afişini devre dışı bırakmak mümkündür. Ayarlayarak bahar.ana.banner modu Özellik, uygulamanın özelliklerinde veya YAML dosyasında “kapalı”, banner’ın konsol çıkışında veya günlük dosyalarında görünmesini önleyebilirsiniz. - Tomcat’ta varsayılan günlüğü uygulaması yerine neden log4j2 kullanmalıyım??
Log4J2, Tomcat’teki varsayılan günlüğü uygulamasına göre çeşitli avantajlar sunar. Günlüklerinizi ihtiyaçlarınıza göre özelleştirmenize izin veren daha geniş bir arıza yelpazesi ve günlük seçenekleri sunar. Log4J2 ayrıca günlük yutma yapılandırmalarını basitleştirerek günlük dosyası haddelemesinde daha fazla esneklik sunar. Ayrıca, Log4J2, günlük seviyelerini kontrol edememe gibi Servlets Logging API’sının sınırlamalarını ortadan kaldırır. Genel olarak, Log4J2’yi kullanmak Tomcat’teki günlük deneyiminizi geliştirebilir.
Apache Tomcat 8
Logging API’si Servlets Java’dan önce.ümit.artık Java tarafından sağlanan günlük API’si. Bu nedenle, size çok fazla seçenek sunmaz. E.G., Günlük seviyelerini kontrol edemezsiniz. Bununla birlikte, Apache Tomcat uygulamasında ServletContext’e yapılan çağrıların.log (String) veya genericservlet.günlük (dize) bilgi seviyesinde kaydedilir. ServletContext çağrıları.log (dize, atılabilir) veya genericservlet.Log (dize, atılabilir) şiddetli seviyede günlüğe kaydedilir.
Günlüklerinizi Apache Tomcat 9, Log4J2 ve Spring-Boot ile temiz tutmak
Bu son günler Apache Tomcat 9 ve Log4J2 ile oynuyorum. Neden eski bir tomcat juli’yi değiştirmek istediğimi merak edebilirsin. Yapılandırmasının sadeliğini ve Juli’nin çalışması gerçeğini sevmeme rağmen, Log4J2, çok ilginç hale getiren çok çeşitli örgüler sunuyor. Ayrıca Log4J2’nin dosyaları nasıl yuvarladığını, orijinal adı dokunulmadan tutma yolunu tercih ederim (e.G. Catalina.log), bu günlük yutma yapılandırmamı (logstash) biraz daha basit hale getiriyor.
Log4j2 yapılandırmasıyla Apache Tomcat
Apache-Tomcat yapılandırması oldukça basit. TOMCAT ClassPath’e Log4J2-Api, Log4J2-Core ve Log4J2-Appserver kitaplıklarını eklemeniz, Log4J2 yapılandırma dosyasını ve kaldırmak $ Catalina_base/conf/logging.özellikler Kurulumunuzdan. Bu adımlar burada açıklanmaktadır.
8’den önce Tomcat sürümlerini kullanıyorsanız.5.4 Ünlü Tomcat ekstralarından Juli-Adapter kütüphanelerinde ne olduğunu merak edebilirsiniz? Artık gerekmiyor, çünkü log4j2 direkle java içine takılabilir.ümit.Logging, Yaşasın! ASF Bugzilla – Bug 58588’de daha fazlasını görün
Üretim ortamları için günlük konfigürasyonu
Son bir Tomcat sürümünü çalıştırıyorsanız, önceki sürümlerin “Log4J’yi Kullanma” bölümünün hala orada olmadığını görebilirsiniz. Eski Log4J’yi yeniden kullanma cazibesine sahip olabilirsiniz.Varsayılan Java’yı yansıtan özellikler.ümit.Kerestecilik. Dikkatli olun, çünkü Log4j2 özellikleri sözdizimi değişti. Bununla (btw, teşekkürler Bryan Maupin. ) Varsayılan üç varsayılan Tomcat kaydı ve ekleyicilerle varsayılan yapılandırmayı alacaksınız. Bir üretim kullanımı için, Tomcat Docs’un hususlarını ve günlüğe kaydedilmeye ilişkin önerileri dikkate alabilirsiniz Mark Thomas, Apache Tomcat Proje Yönetim Komitesi üyesi:
- Yapmak HAYIRT kopyalamak Tomcat çıktı Catalina’da.Out (konsol) ve Catalina’da.Log, Consolehandler’dan kurtulmak
- Eklemek dönme Catalina’ya.kayıt
- Kullanılmış olmayan ekleyicilerin kaldırılması müdür.log ve host_manager.kayıt
- Katılmak farklı gündelik (Catalina ve Localhost) Bir Appender (Catalina.kayıt). Bu, yanlış tanımlanmış filtreler gibi uygulamalardaki dağıtım sorunlarını tespit etmek için yararlıdır.
Örnekte sağlanan Log4J2 yapılandırması bu hususları izlemeye çalışır. Tomcat sunucusunu onunla başlatırsanız ve tomcat’ınız “sağlıklı” çalışıyorsa, konsolda neredeyse hiçbir şey görmemelisiniz. Bu yapılandırma ile konsolda sadece outofmemoryerrors veya iplik dökümleri gibi çok felaket şeyler göreceksiniz.
Zorlama sistemi.Çıkış ve Sistem.günlüğe girme hatası
Sunucumuzda hala kullanan uygulamaları dağıtırsak Sistem.dışarı ve/veya Sistem.erteleme, Onları loger ekleyerek kullanmaya zorlayabiliriz SwallowOutput = “True” varsayılan olarak $ Catalina_base/conf/bağlam.XML sunucunun. Bunu uygulama başına da yapabiliriz, meta-inf/bağlamlarının her birini değiştirebiliriz.XML.
Java Util Logging ve Log4J2
Ayrıca iyi ve eski JUL çerçevesini kullanan uygulamalara sahip olabiliriz:
01 Nisan 2019 09:22:05 Merhaba.HelloworldController Sayhello Bilgisi: Merhaba, Temmuz.
Bu uygulamalar varsayılanı kullanacak Kerestecilik.özellikler JDK’mızın hangi varsayılan seviyesi BİLGİ ve basitFormatter’ı biçimlendirin. Çevre Değişkenini Değiştirme Log4J2 formatımızı kullanmaları zorlayabiliriz Logging_manager. Bunu setenv ekleyerek yapabilirsiniz.sh Dosya: Logging_manager = “-djava.ümit.Kerestecilik.yönetici = org.apache.Kerestecilik.log4j.Temmuz ayında.LogManager “ Şimdi günlükleriniz şöyle bir şeye benzeyecek:
Tomcat 2019-04-01 09: 13: 53.524 [Catalina-Utility-1] Bilgi Merhaba.HelloworldApplication- Merhaba, Temmuz.
Bunu hatırla org.apache.Kerestecilik.log4j.Temmuz ayında.Logmanager log4J-Jul-2’ye dahildir.11.2.size eklenmesi gereken kavanoz köprüsü sınıf.
Yay Boot ve Log4J2
Log4J2 yapılandırmamızı (Appender ve Format) kullanan bir Spring-Boot Hello, Rest uygulamasını dağıtmak istiyoruz ve aynı zamanda farklı günlüğe kaydedicileri tanımlama yeteneğini korumak istiyoruz. Örneğin, hata ayıklama seviyesini işletme sınıflarımıza, merhaba paketine ve Springframework’lere ayarlamak istediğimizi hayal edelim. Ve ayrıca klasik bahar afişini sessizleştirin:
Kerestecilik.seviyesi.org.Springframework = hata ayıklama günlüğü.seviyesi.Merhaba = Hata Ayıkla Yay.ana.banner-mode = kapalı
Varsayılan olarak, Spring-Boot yeni başlayanlar logback kullanır, bu nedenle log4j2’yi kullanmak için hariç tutmak Bahar-boot starter-logging farklı başlangıç eserlerinden ve Spring-boot-starter-log4j2 bağımlılık. Bu sonuncusu tüm Log4J2 bağımlılıklarını ve SLF4J’leri içerecektir. Parametreli mesajlar gibi SL4J özelliklerinden hiçbirini kullanmadığımız veya bizim durumumuzda doğrudan log4j2 kullanmak istiyoruz. Bu sizin durumunuzsa, sadece ekleyebilirsiniz log4j-web bağımlılık. Bu arada, Spring olmayan web uygulamaları için eklemeniz gereken budur, “Web Uygulamalarında Log4J kullanma” adresine daha fazlasına bakın.
Çözüm
Bu girişte Apache Tomcat’in Log4J2 ile çalışacak şekilde nasıl yapılandırılacağını, bu kurulumu üretime nasıl hazır hale getireceğimizi ve Tomcat sunucumuzda yapılandırmamızı kullanan bir Spring-Boot uygulamasının nasıl dağıtılacağını öğrendik. Tüm bunları bu GitHub deposunda bulabilirsiniz.
Güzel bir kodlama günü geçirin!
Apache Tomcat 8
Apache Tomcat için dahili günlüğü, varsayılan olarak Java’yı kullanmak için sert kodlanmış olan Apache Commons’ın yeniden adlandırılmış çatalını yeniden adlandırılmış paketlenmiş bir paketli olan Juli’yi kullanır.ümit.günlüğe kaydetme çerçevesi. Bu, bir web uygulaması Apache Commons Logging kullansa bile, Tomcat’in dahili günlüğünün ve herhangi bir web uygulama günlüğünün bağımsız kalmasını sağlar.
Tomcat’i dahili günlüğü için alternatif bir günlük çerçevesi kullanacak şekilde yapılandırmak için, Java kullanmak için sert kodlanmış Juli uygulamasını değiştirmelidir.ümit.Tam Commons Logging Discovery Mekanizma. Böyle bir uygulama ekstras bileşeni olarak sağlanır. Dahili günlüğü için Tomcat’in Log4J çerçevesini kullanacak şekilde nasıl yapılandırılacağına dair talimatlar aşağıda bulunabilir.
Apache Tomcat’ta çalışan bir web uygulaması şunları yapabilir:
- Seçtiği herhangi bir günlük çerçevesini kullanın.
- System Logging API, Java kullanın.ümit.Kerestecilik .
- Java Servlets spesifikasyonu, Javax tarafından sağlanan günlük API’sını kullanın.hizmetçi.ServletContext.kayıt(. )
Farklı web uygulamaları tarafından kullanılan günlük çerçeveleri bağımsızdır. Daha fazla ayrıntı için sınıf yüklemesine bakın. Bu kuralın istisnası java.ümit.Kerestecilik . Günlük kütüphaneniz tarafından doğrudan veya dolaylı olarak kullanılırsa, sistem sınıfı yükleyici tarafından yüklendiği için öğeleri web uygulamaları arasında paylaşılacaktır.
Java Logging API – Java.ümit.Kerestecilik
Apache Tomcat, Java’nın birkaç temel unsurunun kendi uygulamasına sahiptir.ümit.Günlük API. Bu uygulamaya Juli denir. Anahtar Bileşen, Tomcat’te (ve farklı sınıf yükleyicileri) çalışan farklı web uygulamalarının farkında olan özel bir LogManager uygulaması var. Özel Uygulama Başına Giriş Yapılandırmalarını Destekler. Ayrıca, bir web uygulaması bellekten boşaltıldığında Tomcat tarafından da bilgilendirilir, böylece sınıflarına yapılan referanslar temizlenebilir ve bellek sızıntılarını önleyebilir.
Bu Java.ümit.Giriş uygulaması, Java’yı başlatırken belirli sistem özellikleri sağlayarak etkinleştirilir. Apache Tomcat başlangıç komut dosyaları bunu sizin için yapar, ancak Tomcat’i çalıştırmak için farklı araçlar kullanıyorsanız (JSVC veya Tomcat’i bir IDE içinden çalıştırıyorsanız), bunlarla kendinizle ilgilenmelisiniz.
Java hakkında daha fazla ayrıntı.ümit.Giriş, JDK’nız için ve Java için Javadoc sayfalarında belgelerde bulunabilir.ümit.günlüğe kaydetme paketi.
Tomcat Juli hakkında daha fazla ayrıntı aşağıda bulunabilir.
Servletler Günlük API
Javax çağrıları.hizmetçi.ServletContext.kayıt(. ) günlük mesajları yazmak için dahili tomcat günlüğü tarafından işlenir. Bu tür mesajlar adlandırılan kategoriye kaydedilir
org.apache.Catalina.çekirdek.Konteyner tabanı.[$].[$].[$]
Bu günlüğü, Tomcat günlük konfigürasyonuna göre gerçekleştirilir. Bir web uygulamasında üzerine yazamazsınız.
Logging API’si Servlets Java’dan önce.ümit.artık Java tarafından sağlanan günlük API’si. Bu nedenle, size çok fazla seçenek sunmaz. E.G., Günlük seviyelerini kontrol edemezsiniz. Bununla birlikte, Apache Tomcat uygulamasında ServletContext’e yapılan çağrıların.log (String) veya genericservlet.günlük (dize) bilgi seviyesinde kaydedilir. ServletContext çağrıları.log (dize, atılabilir) veya genericservlet.Log (dize, atılabilir) şiddetli seviyede günlüğe kaydedilir.
Konsol
Tomcat’i Unixes üzerinde çalıştırırken, konsol çıkışı genellikle Catalina adlı dosyaya yönlendirilir.dışarı . Ad bir ortam değişkeni kullanılarak yapılandırılabilir. (Başlangıç komut dosyalarına bakın). Sisteme ne yazılır.err/out o dosyaya yakalanacak. Bu şunları içerebilir:
- Java tarafından basılansız istisnalar.lug.İplik grubu.yakalanmamış istisna(..)
- Bir sistem sinyali aracılığıyla istediyseniz, iş parçacığı dökümleri
Windows’ta hizmet olarak çalışırken, konsol çıkışı da yakalanır ve yönlendirilir, ancak dosya adları farklıdır.
Apache Tomcat’teki varsayılan günlük yapılandırması aynı mesajları konsola ve bir günlük dosyasına yazar. Bu, tomcat’i geliştirme için kullanırken harika, ancak üretimde genellikle gerekli değildir.
Hala sistemi kullanan eski uygulamalar.Çıkış veya Sistem.Bir bağlamda SwallowOutput özniteliğini ayarlayarak err kandırılabilir. Öznitelik true olarak ayarlanmışsa, sistem çağrıları.Talep işleme sırasında çıkış/hata ele geçirilecek ve çıktıları Javax kullanılarak günlük alt sistemine beslenecek.hizmetçi.ServletContext.kayıt(. ) Çağrılar.
Not, SwallowOutput özelliğinin aslında bir hile olduğunu ve sınırlamaları var. Yalnızca doğrudan sisteme yapılan çağrılarla çalışır.OUT/ERR, ve yalnızca istek işleme döngüsü sırasında. Uygulama tarafından oluşturulabilecek başka iş parçacıklarında çalışmayabilir. Sistem akışlarına yazdıkları günlük çerçevelerini engellemek için kullanılamaz, çünkü bunlar erken başlar ve yeniden yönlendirme gerçekleşmeden önce akışlara doğrudan bir referans alabilir.
Erişim günlüğü
Erişim günlüğü, valf olarak uygulanan ilgili ama farklı bir özelliktir . Günlük dosyalarını yazmak için bağımsız mantığı kullanır. Erişim günlüğü için temel gereksinim, düşük ek yüklü büyük bir sürekli veri akışını işlemektir, bu nedenle yalnızca kendi hata ayıklama mesajları için günlüğe kaydetme Apache Commons kullanır. Bu uygulama yaklaşımı ek yük ve potansiyel olarak karmaşık yapılandırmayı önler. Çeşitli rapor formatları dahil, yapılandırması hakkında daha fazla bilgi için lütfen valf belgelerine bakın.
Java kullanma.ümit.Günlük (varsayılan)
Java’nın varsayılan uygulaması.ümit.JDK’da sağlanan günlük kaydı yararlı olmak için çok sınırlıdır. Temel sınırlama, yapılandırma vm. Sonuç olarak, Tomcat, varsayılan yapılandırmada, varsayılan LogManager uygulamasını, bu eksiklikleri ele alan Juli adlı bir konteyner dostu uygulama ile değiştirecektir.
Juli, standart JDK Java ile aynı yapılandırma mekanizmalarını destekler.ümit.Logging, programlı bir yaklaşım veya özellik dosyaları kullanarak. Temel fark, sınıfa yükleyici özellikleri dosyalarının ayarlanabilmesidir (kolay yeniden dağıtım dostu webapp yapılandırması sağlar) ve özellik dosyaları, işleyicileri tanımlamak ve bunları kaydetecilere atamak için daha fazla özgürlük sağlayan genişletilmiş yapıları destekler.
Juli varsayılan olarak etkinleştirilir ve normal Global Java’ya ek olarak ClassLoader yapılandırmasını destekler.ümit.Günlük Yapılandırması. Bu, günlüğün aşağıdaki katmanlarda yapılandırılabileceği anlamına gelir:
- Küresel olarak. Bu genellikle $/conf/togging’de yapılır.Özellikler Dosyası. Dosya Java tarafından belirtilmiştir.ümit.Kerestecilik.yapılandırma.Başlangıç komut dosyaları tarafından ayarlanan dosya sistemi özelliği. Okunamaz değilse veya yapılandırılmamışsa, varsayılan $/lib/günlüğünü kullanmaktır.JRE’deki Özellikler Dosyası.
- Web uygulamasında. Dosya Web-Inf/Sınıflar/Günlük olacak.özellikler
Varsayılan günlüğü.JRE’deki özellikler, günlüğe kaydetmeyi sisteme yönlendiren bir konsolon.erteleme. Varsayılan konf/günlük kaydı.Apache Tomcat’teki Özellikler ayrıca dosyalara yazan birkaç FileHandler s ekler.
Bir işleyicinin günlük seviyesi eşiği varsayılan olarak bilgidir ve şiddetli, uyarı, bilgi, yapılandırma, ince, daha ince, en iyisi veya hepsi kullanılarak ayarlanabilir. Ayrıca, bir seviye günlüğü toplamak ve belirlemek için belirli paketleri hedefleyebilirsiniz.
Tomcat’ın içsellerinin bir kısmı için hata ayıklama günlüğünü etkinleştirmek için, hem en iyi veya tüm seviyeyi kullanmak için hem uygun kayıt cihazlarını hem de uygun işleyicileri yapılandırmalısınız. e.G.:
org.apache.Catalina.oturum.Level = Tüm Java.ümit.Kerestecilik.Konsolon.seviye = hepsi
Hata ayıklama günlüğünü etkinleştirirken, hata ayıklama günlüğünün büyük miktarda bilgi üretebileceği için mümkün olan en dar kapsam için etkinleştirilmesi önerilir.
Juli tarafından kullanılan yapılandırma, düz java tarafından desteklenenle aynıdır.ümit.Günlük kaydı, ancak kaydedicileri ve işleyicileri yapılandırmada daha iyi esneklik sağlamak için birkaç uzantı kullanıyor. Ana farklılıklar:
- İşleyici adlarına bir önek eklenebilir, böylece tek bir sınıfın birden fazla işleyicisi başlatılabilir. Önek, bir rakamla başlayan ve ile biten bir dizedir ‘.’. Örneğin, 22foobar. geçerli bir önek.
- Sistem Özelliği Değişimi $ içeren özellik değerleri için gerçekleştirilir.
- Org’u uygulayan bir sınıf yükleyici kullanıyorsanız.apache.Juli.WebAppproperties Arayüzü (Tomcat’ın Web Uygulama Sınıfı Yükleyicisi Der), daha sonra özellik değiştirme, sırasıyla web uygulama adı, ana bilgisayar adı ve hizmet adı ile değiştirilen $, $ ve $ için gerçekleştirilir.
- Varsayılan olarak, kaydediciler ilişkili işleyicileri varsa, ebeveynlerine delege etmezler. Bu, logger adı kullanılarak logger başına değiştirilebilir.Boolean değerini kabul eden usparenthandlers mülkü.
- Kök logger, işleyicileri kümesini kullanarak tanımlayabilir .işleyiciler mülkü.
- Varsayılan olarak günlük dosyaları dosya sisteminde sonsuza dek tutulacaktır. Bu, işleyici başına işçi adı kullanılarak değiştirilebilir.Maxdays mülkü. Mülkün belirtilen değeri
Java tarafından sağlananlarla birlikte kullanılabilecek birkaç ek uygulama sınıfı vardır. Dikkate değer olan org.apache.Juli.FileHandler .
org.apache.Juli.FileHandler günlüklerin arabelleğini destekler. Tamponlama varsayılan olarak etkin değildir. Yapılandırmak için, bir işleyicinin bufferize özelliğini kullanın. 0 değeri sistem varsayılan arabelleğini kullanır (tipik olarak bir 8K arabelleği kullanılır). 0 değeri, tanımlanan değere sahip bir BufferedOutputStream kullanır, ancak sistem varsayılan arabelleğinin de uygulanacağını unutmayın.
Örnek Günlük.$ catalina_base/conf’a yerleştirilecek özellikler dosyası:
İşleyiciler = 1Catalina.org.apache.Juli.FileHandler, \ 2localhost.org.apache.Juli.FileHandler, \ 3Manager.org.apache.Juli.FileHandler, \ Java.ümit.Kerestecilik.Konsolon .İşleyiciler = 1Catalina.org.apache.Juli.FileHandler, Java.ümit.Kerestecilik.ConsoleHandler ############################################################ # Handler specific properties. # İşleyiciler için belirli yapılandırma bilgilerini açıklar. ############################################################ 1catalina.org.apache.Juli.FileHandler.Level = Fine 1Catalina.org.apache.Juli.FileHandler.dizin = $/logs 1catalina.org.apache.Juli.FileHandler.önek = catalina. 2localhost.org.apache.Juli.FileHandler.Level = Fine 2localhost.org.apache.Juli.FileHandler.dizin = $/logs 2localhost.org.apache.Juli.FileHandler.önek = localhost. 3Manager.org.apache.Juli.FileHandler.Level = Fine 3Manager.org.apache.Juli.FileHandler.dizin = $/logs 3manager.org.apache.Juli.FileHandler.önek = yönetici. 3Manager.org.apache.Juli.FileHandler.Buffersize = 16384 Java.ümit.Kerestecilik.Konsolon.Level = Güzel Java.ümit.Kerestecilik.Konsolon.Formatter = Java.ümit.Kerestecilik.SimpleFormatter ###########################################################################################################################################################################################################################################################################Tesis Özel Özellikleri. # Her loger için ekstra kontrol sağlar. ############################################################ org.apache.Catalina.çekirdek.Konteyner tabanı.[Catalina].[Localhost].seviye = bilgi org.apache.Catalina.çekirdek.Konteyner tabanı.[Catalina].[Localhost].işleyiciler = \ 2localhost.org.apache.Juli.FileHandler Org.apache.Catalina.çekirdek.Konteyner tabanı.[Catalina].[Localhost].[/müdür].seviye = bilgi org.apache.Catalina.çekirdek.Konteyner tabanı.[Catalina].[Localhost].[/müdür].işleyiciler = \ 3Manager.org.apache.Juli.FileHandler # Örneğin, kuruluşu ayarlayın.apache.Catalina.ümit.Lifecyclebase Logger LIGECycleBase Değişen Durumu Genişleten Her Bileşen Günlüğe kaydedilecek durum: #org.apache.Catalina.ümit.Lifecyclebase.Seviye = Güzel
Örnek Günlük.Web uygulaması içindeki Web-Inf/Sınıflara yerleştirilecek Servlet-Exports Web Uygulaması için Özellikler:
işleyiciler = org.apache.Juli.FileHandler, Java.ümit.Kerestecilik.ConsoleHandler ############################################################ # Handler specific properties. # İşleyiciler için belirli yapılandırma bilgilerini açıklar. ############################################################ org.apache.Juli.FileHandler.Level = Fine Org.apache.Juli.FileHandler.dizin = $/logs org.apache.Juli.FileHandler.önek = $. java.ümit.Kerestecilik.Konsolon.Level = Güzel Java.ümit.Kerestecilik.Konsolon.Formatter = Java.ümit.Kerestecilik.SimpleFormatter
Dokümantasyon Referansları
Ek bilgi için aşağıdaki kaynaklara bakın:
- Org için Apache Tomcat Javadoc.apache.Juli Paketi.
- Java için Oracle Java 6 Javadoc.ümit.günlüğe kaydetme paketi.
Üretim kullanımı için hususlar
Aşağıdakileri not etmek isteyebilirsiniz:
- Consolehandler’ı yapılandırmadan kaldırmayı düşünün. Varsayılan olarak (sayesinde .İşleyiciler ayarı) Günlük hem bir FileHandler hem de bir konsolon . İkincisinin çıktısı genellikle Catalina gibi bir dosyaya çekilir.dışarı . Böylece aynı mesajların iki kopyasıyla sonuçlanırsınız.
- Kullanmadığınız uygulamalar için FileHandler S’yi kaldırmayı düşünün. E.G., ev sahibi yöneticisi için .
- İşleyiciler varsayılan olarak, günlük dosyalarını yazmak için sistem varsayılan kodlamasını kullanın. Kodlama özelliği ile yapılandırılabilir. Ayrıntılar için Javadoc’a bakın.
- Bir erişim günlüğü yapılandırmayı düşünün.
Log4j kullanma
Bu bölüm, tomcat’i java yerine log4j kullanacak şekilde nasıl yapılandırılacağını açıklıyor.ümit.Tüm Tomcat’ın dahili günlük kaydı için günlük kaydı.
Not: Bu bölümde açıklanan adımlar, Tomcat’i kendi günlüğü için Apache Log4J’yi kullanmak üzere yeniden yapılandırmak istediğinizde gereklidir. Bu adımlar Olumsuz Sadece kendi web uygulamanızda log4j kullanmak istiyorsanız gerekli. – Bu durumda, sadece log4j.Jar ve Log4J.web uygulamanızın web-inf/lib ve web-inf/sınıflarına özellikler.
Aşağıdaki adımlarda, Log4J’yi yapılandırmayı TOMCAT’ın dahili günlüğüne çıktı olarak açıklıyor.
- Log4j adlı bir dosya oluşturun.Aşağıdaki içeriğe sahip özellikler ve $ catalina_base/lib
log4j.rootlogger = info, catalina # tüm ekçileri tanımla log4j.ek.Catalina = org.apache.log4j.DailyrollingFileAppender Log4J.ek.Catalina.Dosya = $/logs/catalina log4j.ek.Catalina.Append = true log4j.ek.Catalina.Kodlama = UTF-8 # Roll-Over-Over-Over günde bir kez log4j.ek.Catalina.DatePattern = '.'yyyy-mm-dd'.log 'log4j.ek.Catalina.Düzen = org.apache.log4j.DesenLayout log4j.ek.Catalina.düzen.Dönüşümpater = %d [ %t] %-5p %c- %m %n log4j.ek.Localhost = org.apache.log4j.DailyrollingFileAppender Log4J.ek.Yerel ev.File = $/logs/localhost log4j.ek.Yerel ev.Append = true log4j.ek.Yerel ev.Kodlama = UTF-8 Log4J.ek.Yerel ev.DatePattern = '.'yyyy-mm-dd'.log 'log4j.ek.Yerel ev.Düzen = org.apache.log4j.DesenLayout log4j.ek.Yerel ev.düzen.Dönüşümpater = %d [ %t] %-5p %c- %m %n log4j.ek.Yönetici = org.apache.log4j.DailyrollingFileAppender Log4J.ek.MÜDÜR.File = $/logs/yönetici log4j.ek.MÜDÜR.Append = true log4j.ek.MÜDÜR.Kodlama = UTF-8 Log4J.ek.MÜDÜR.DatePattern = '.'yyyy-mm-dd'.log 'log4j.ek.MÜDÜR.Düzen = org.apache.log4j.DesenLayout log4j.ek.MÜDÜR.düzen.Dönüşümpater = %d [ %t] %-5p %c- %m %n log4j.ek.Ana bilgisayar = org.apache.log4j.DailyrollingFileAppender Log4J.ek.Ev sahibi yönetici.File = $/logs/host-yönetici log4j.ek.Ev sahibi yönetici.Append = true log4j.ek.Ev sahibi yönetici.Kodlama = UTF-8 Log4J.ek.Ev sahibi yönetici.DatePattern = '.'yyyy-mm-dd'.log 'log4j.ek.Ev sahibi yönetici.Düzen = org.apache.log4j.DesenLayout log4j.ek.Ev sahibi yönetici.düzen.Dönüşümpater = %d [ %t] %-5p %c- %m %n log4j.ek.Konsol = org.apache.log4j.ConsoleAppender Log4J.ek.KONSOL.Kodlama = UTF-8 Log4J.ek.KONSOL.Düzen = org.apache.log4j.DesenLayout log4j.ek.KONSOL.düzen.Dönüşümpatter = %d [ %t] %-5p %C- %m %n # hangi girişçileri günlüğe kaydeden log4j.ağaç kesicisi.org.apache.Catalina.çekirdek.Konteyner tabanı.[Catalina].[localhost] = bilgi, localhost log4j.ağaç kesicisi.org.apache.Catalina.çekirdek.Konteyner tabanı.[Catalina].[Localhost].[/yönetici] = \ info, yönetici log4j.ağaç kesicisi.org.apache.Catalina.çekirdek.Konteyner tabanı.[Catalina].[Localhost].[/host-manager] = \ info, host-yönetici
- Log4j’i indirin (tomcat v1 gerektirir.2.X).
- Tomcat-Juli’yi indirin veya oluşturun.Jar ve Tomcat-Juli-Adapters.Tomcat için “ekstra” bileşen olarak mevcut olan kavanoz. Ayrıntılar için ek bileşen belgelerine bakın. Bu tomcat-juli.kavanoz varsayılan olandan farklıdır. Tam Apache Commons Logging uygulamasını içerir ve böylece Log4J’nin varlığını keşfedebilir ve kendisini yapılandırabilir.
- Tomcat’i küresel olarak Log4J kullanacak şekilde yapılandırmak istiyorsanız:
- Log4j koy.Jar ve Tomcat-Juli-Adapters.”Ekstralar” dan $ catalina_home/lib .
- $ Catalina_home/bin/tomcat-juli’yi değiştirin.Tomcat-Juli ile kavanoz.”Ekstralar” dan kavanoz.
- Tomcat’i ayrı $ catalina_home ve $ catalina_base ile çalıştırıyorsanız ve Log4J’yi yalnızca tek bir $ catalina_base kullanacak şekilde yapılandırmak istiyorsanız:
- Varsa $ Catalina_base/bin ve $ catalina_base/lib dizinleri oluşturun.
- Log4j koy.Jar ve Tomcat-Juli-Adapters.”Ekstralar” dan $ catalina_base/lib
- Tomcat-Juli.”Ekstralar” ından Catalina_Base/Bin/Tomcat-Juli.kavanoz
- Bir güvenlik yöneticisiyle çalışıyorsanız, $ catalina_base/conf/catalina’yı düzenlemeniz gerekir.Tomcat-Juli’nin farklı bir kopyasını kullanarak ayarlamak için politika dosyası.kavanoz.
Not: Bu işe yarıyor, çünkü $ catalina_base’de varsa, $ catalina_home içinde aynı kütüphaneye tercih edilir .
Not: Tomcat-Juli.Kavanoz, bootstrap işleminin bir parçası olarak yüklendiği için $ catalina_base /bin’den $ catalina_base /lib yüklenir ve tüm bootstrap sınıfları çöp kutusundan yüklenir.
Bu Log4J yapılandırması varsayılan Java’yı yansıtır.ümit.Tomcat ile birlikte gönderilen günlüğe kaydetme kurulumu: Hem yönetici hem de ana bilgisayar uygulamaları bireysel bir günlük dosyası alır ve diğer her şey “Catalina’ya gider.Günlük “günlük dosyası. Her dosya günde bir kez açılır.
Günlüğe hangi paketlerin dahil edileceği konusunda daha seçici olabilirsiniz (ve daha seçici olabilirsiniz). Tomcat, kaydettikleri motor ve ana bilgisayar adlarına göre tanımlar. Örneğin, daha ayrıntılı bir Catalina Localhost günlüğü için bunu Log4J’nin sonuna ekleyin.Yukarıdaki özellikler. Log4J XML tabanlı yapılandırma dosyalarında bu adlandırma kuralını (kare parantez ile) kullanmayla ilgili bilinen sorunlar olduğunu unutmayın, bu nedenle Log4J’nin gelecekteki bir sürümü bu Sözleşmeye izin verene kadar açıklandığı gibi bir özellik dosyası kullanmanızı öneririz.
log4j.ağaç kesicisi.org.apache.Catalina.çekirdek.Konteyner tabanı.[Catalina].[localhost] = hata ayıklama log4j.ağaç kesicisi.org.apache.Catalina.Core = hata ayıklama log4j.ağaç kesicisi.org.apache.Catalina.Oturum = hata ayıklama
Dikkatli olun: Bir hata ayıklama seviyesi megabaytlık tomrukçuluk ve Tomcat’ın yavaş çalışması üretecektir. Dahili Tomcat operasyonlarının hata ayıklanması gerektiğinde bu seviye az miktarda kullanılmalıdır.
Web uygulamalarınız kesinlikle kendi Log4J yapılandırmalarını kullanmalıdır. Bu geçerli ile Yukarıdaki yapılandırma. Benzer bir log4j yerleştirirsiniz.Web uygulamanızın Web-Inf/Sınıflar dizinindeki özellikler dosyası ve log4jx.y.zıpla.Web-Inf/Lib’e kavanoz. Ardından paket seviyesi günlüğünüzü belirtin. Bu, Commons-Logging gerektirmeyen * * olmayan * temel bir Log4J kurulumudur ve daha fazla seçenek için Log4J belgelerine danışmalısınız. Bu sayfa yalnızca bir önyükleme kılavuzu olarak tasarlanmıştır.
- Bu, Log4J kitaplıklarını Common ClassLoader aracılığıyla web uygulamalarına ortaya çıkarır. Ayrıntılar için sınıf yükleme belgelerine bakın. Bu nedenle, Apache Commons Logging Kütüphanesi’ni kullanan web uygulamaları ve kütüphanelerin, temel günlük uygulaması olarak Log4J’yi otomatik olarak seçmesi muhtemeldir.
- Java.ümit.Doğrudan kullanan web uygulamaları için günlüğe kaydetme API’sı hala kullanılabilir. $/Conf/günlük kaydı.Özellikler dosyası hala Tomcat Startup komut dosyaları tarafından referans verilmektedir. Daha fazla bilgi için, bu sayfaya giriş alt bölümlerine bakın. $/Konf/günlüğün kaldırılması.Yukarıdaki adımlardan biri olarak belirtilen özellikler dosyası Java’ya neden olur.ümit.Consolehandler kullanacak ve bu nedenle herhangi bir standart günlük dosyası oluşturmayan JRE için varsayılan yapılandırmaya geri dönüş yapmak için giriş yapmak. Tüm günlük dosyalarınızın Log4J tarafından oluşturulduğunu onaylamalısınız önce Standart mekanizmayı devre dışı bırakma.
- Erişim Günlüğü Valfı Ve ExtendedAccesslogvalve Kendi kendine yetenlü günlük uygulamalarını kullanın, böylece log4j kullanacak şekilde yapılandırılamıyor. Belirli yapılandırma ayrıntıları için valflere bakın.
Yorumlar
Fark etme: Bu Yorumlar Bölümü, Apache Tomcat için belgeleri geliştirme konusundaki önerilerinizi toplar.
Sorun yaşıyorsanız ve yardıma ihtiyacınız varsa, Yardım Bulun sayfasını okuyun ve Tomcat-Users Posta Listesi’nde sorunuzu sorun. Burada böyle sorular sorma. Bu bir Soru -Cevap Bölümü değil.
Apache yorum sistemi burada açıklandı. Yorumlar, uygulanmış veya geçersiz/konu dışı olarak kabul edilirse moderatörlerimiz tarafından kaldırılabilir.
Tomcat Log4J yapılandırması adım adım
Juli Logging Kütüphanesi ve Yapılandırması, Tomcat Yükleyicisi ile varsayılan olarak kullanılabilir. Tomcat Dahili Günlük için Log4J’yi kullanmak için, mevcut Juli kütüphanesini Log4J-Juli entegrasyonu ile değiştirmeniz gerekecektir.
1. Mevcut Juli Kütüphanesini Sil (Catalina_Home/Bin/Tomcat-Juli.jar dosyası) ve mevcut tomcat java günlüğü yapılandırma dosyası (catalina_home/conf/cogging.özellikler).
2. İndir Juli Log4J Tomcat Kütüphanesi (Tomcat-Juli.jar) tomcat indirmelerinden’ Ekstras bölümü (http: // tomcat.apache.Org/İndirme-70.CGI). İndirilen dosyayı catalina_home/bin dizinine yerleştirin.
3. Tomcat Juli Adaptörler Kütüphanesi’ni indirin (Tomcat-Juli-Adapters.jar) tomcat indirmelerinden’ Ekstralar bölümü. Bu dosyayı catalina_home/lib dizinine yerleştirin.
4. Log4J’yi indirin (sürüm 1.2 veya üstü) ve indirilen kütüphane dosyasını Catalina_Home/Lib dizinine yerleştirin.
5. Log4j yapılandırma dosyasını aşağıdaki konumda oluşturun: catalina_home/lib/log4j.özellikler. Varsayılan Java Günlük Yapılandırması ile eşleşen Log4J yapılandırmasını aşağıdaki kontrol edin.
6. Tomcat’i yeniden başlat.
Log4j Yapılandırma Dosyası Varsayılan Tomcat Günlük Ayarları:
log4j.rootlogger = info, catalina # tüm ekçileri tanımla log4j.ek.Catalina = org.apache.log4j.DailyrollingFileAppender Log4J.ek.Catalina.File = $/logs/catalina. log4j.ek.Catalina.Append = true log4j.ek.Catalina.Kodlama = UTF-8 # Roll-Over-Over-Over günde bir kez log4j.ek.Catalina.DatePattern = '.'yyyy-mm-dd'.log 'log4j.ek.Catalina.Düzen = org.apache.log4j.DesenLayout log4j.ek.Catalina.düzen.Dönüşümpater = %d [ %t] %-5p %c- %m %n log4j.ek.Localhost = org.apache.log4j.DailyrollingFileAppender Log4J.ek.Yerel ev.File = $/logs/localhost. log4j.ek.Yerel ev.Append = true log4j.ek.Yerel ev.Kodlama = UTF-8 Log4J.ek.Yerel ev.DatePattern = '.'yyyy-mm-dd'.log 'log4j.ek.Yerel ev.Düzen = org.apache.log4j.DesenLayout log4j.ek.Yerel ev.düzen.Dönüşümpater = %d [ %t] %-5p %c- %m %n log4j.ek.Yönetici = org.apache.log4j.DailyrollingFileAppender Log4J.ek.MÜDÜR.File = $/logs/yönetici. log4j.ek.MÜDÜR.Append = true log4j.ek.MÜDÜR.Kodlama = UTF-8 Log4J.ek.MÜDÜR.DatePattern = '.'yyyy-mm-dd'.log 'log4j.ek.MÜDÜR.Düzen = org.apache.log4j.DesenLayout log4j.ek.MÜDÜR.düzen.Dönüşümpater = %d [ %t] %-5p %c- %m %n log4j.ek.Ana bilgisayar = org.apache.log4j.DailyrollingFileAppender Log4J.ek.Ev sahibi yönetici.File = $/logs/host-manager. log4j.ek.Ev sahibi yönetici.Append = true log4j.ek.Ev sahibi yönetici.Kodlama = UTF-8 Log4J.ek.Ev sahibi yönetici.DatePattern = '.'yyyy-mm-dd'.log 'log4j.ek.Ev sahibi yönetici.Düzen = org.apache.log4j.DesenLayout log4j.ek.Ev sahibi yönetici.düzen.Dönüşümpater = %d [ %t] %-5p %c- %m %n log4j.ek.Konsol = org.apache.log4j.ConsoleAppender Log4J.ek.KONSOL.Kodlama = UTF-8 Log4J.ek.KONSOL.Düzen = org.apache.log4j.DesenLayout log4j.ek.KONSOL.düzen.Dönüşümpatter = %d [ %t] %-5p %C- %m %n # hangi girişçileri günlüğe kaydeden log4j.ağaç kesicisi.org.apache.Catalina.çekirdek.Konteyner tabanı.[Catalina].[localhost] = bilgi, localhost log4j.ağaç kesicisi.org.apache.Catalina.çekirdek.Konteyner tabanı.[Catalina].[Localhost].[/yönetici] = bilgi, yönetici log4j.ağaç kesicisi.org.apache.Catalina.çekirdek.Konteyner tabanı.[Catalina].[Localhost].[/host-manager] = info, host-yöneticisi
Tomcat artık tüm dahili günlüğü için Log4J kullanacak.
Yukarıdaki yapılandırmayı anlamak için, net bir görünüm elde etmek için aşağıdaki ayrıntıları kontrol edin
Log4j için yapılandırma öğeleri’S desenLayout
%D Günlük Tarihi. Tarih desenini kıvırcık parantez içinde ( %d) %c tam nitelikli sınıf adı (sadece basit sınıf adını yazdırmak için %c kullanın) %t kaygının gerçekleştiği iş parçacığının adı %p logging olayının dosya adı %p logging olayı %m gerçek günlüğü ekleme mesajı %n çizgi ayırıcısı (bu da bu desenin sonuna ekleyin (bu da bu desenin sonuna ekleyin)
İşte bazı desen örnekleri ve ürettikleri günlük girişleri:
%d [ %t] %-5p %c- %m %n 2011-09-07 14: 07: 41,509 [ana] bilgi myntclass-yürütme.
%5p [%t] (%f:%l) -%m%n bilgi [ana] (myntclass.Java: 12) - yürütme.
Aşağıdaki Log4J kontrolü hakkında daha fazla bilgi için:
http: // günlük.apache.org/log4j/dizin.HTML
Herhangi bir © Telif Hakkı veya Eksik Kredi Sorununda lütfen daha hızlı çözünürlükler için Telif Hakları sayfasını kontrol edin.
Makale gibi. Paylaş.
- Yazdırmak için tıklayın (yeni pencerede açılır)
- Bir arkadaşınıza bir bağlantıyı e -postayla göndermek için tıklayın (yeni pencerede açılır)
- Reddit’te paylaşmak için tıklayın (yeni pencerede açılır)
- Pinterest’te paylaşmak için tıklayın (yeni pencerede açılır)
- LinkedIn’de paylaşmak için tıklayın (yeni pencerede açılır)
- WhatsApp’ta paylaşmak için tıklayın (yeni pencerede açılır)
- Twitter’da paylaşmak için tıklayın (yeni pencerede açılır)
- Facebook’ta paylaşmak için tıklayın (yeni pencerede açılır)
- Tumblr’da paylaşmak için tıklayın (yeni pencerede açılır)
- Cepte paylaşmak için tıklayın (yeni pencerede açılır)
- Telegram’da paylaşmak için tıklayın (Yeni Pencerede Açılır)
- Skype’ta paylaşmak için tıklayın (yeni pencerede açılır)
Nasıl Yapılır: Tomcat 9’u Log4J2 üzerinden kaydetmek için yapılandırın
Tomcat 9’un dahili günlüğünü (Catalina ve Localhost) Log4J2’ye nasıl yönlendirebilirsiniz?? Tomcat ve Log4J’nin eski sürümleri için birçok kılavuz olsa da, Tomcat 9 ve Log4J2 ile ilgili “eksiksiz” bir şey bulamadım; Apache Tomcat 9 dokümantasyonu “Alternatif Günlük Çerçevesi tarafından sağlanan talimatlara” ve Apache Log4J belgelerine işaret ediyor (2’de kavanoz adları. düzeltildi):
- Catalina Home’da Log4J2/Lib ve Log4J2/Conf adlı bir dizi dizin oluşturma.
- Log4j-api-2 yerleştirme.12.0.Jar, log4j-core-2.12.0.kavanoz ve log4j-appserver-2.12.0.Log4j2/lib dizininde kavanoz.
- Log4j2-tomcat adlı bir dosya oluşturma.xml, log4j2-tomcat.json, log4j2-tomcat.Yaml, log4j2-tomcat.YML veya log4j2-tomcat.Log4j2/conf dizinindeki özellikler.
- Setenv oluştur veya değiştir.Tomcat bin dizinindeki sh classpath = $ catalina_home/log4j2/lib/*: $ catalina_home/log4j2/conf
Ama o log4j2-tomcat’e ne koymalı.* yapılandırma dosyası?
5 Tem 2019’da 12:33 tarihinde sordu
682 1 1 Altın Rozeti 6 6 Gümüş Rozetler 17 17 Bronz Rozetler
2 Cevaplar 2
Apache Tomcat 7 belgesinde bir örnek özellik dosyası buldum, ancak bu Log4J 1 ile kullanım içindir.X, Log4J2 Özellikleri Dosya Sözdizimi’ne uyarlamak zorunda kaldım. Sonuç bu:
# 'Durum', Log4j2'nin kendisinden gelen günlük mesajlarını ifade eder MonitorInInval = 30 Durum = Uyarı Uyarı.Loglevel.Catalina = Info mülkü.Loglevel.localhost = bilgi özelliği.yerleşim yeri.Catalina = %d %-5p [ %t] %-22.%22C %M Mülkiyet.yerleşim yeri.localhost = %d %-5p [ %t] %-30.%30c %M %n # CrontriggerPolicy kullanarak günlükleri ayda bir kez rulo. mülk.Filedatepatern.Catalina = %d Mülkiyet.Filedatepatern.localhost = %d Mülkiyet.crontriggerschedule.Catalina = 0 0 0 1 * ? mülk.crontriggerschedule.localhost = 0 0 0 1 * ? ## Başlayıcılar # N.B.: - 'Ekleyiciler = Catalina, Localhost, Konsol' # belirtmeye gerek yok, çünkü bu tanımlayıcılar içermediğinden '.'Karakterler. # - Alt bileşen tanımlayıcıları 'politikaları' ve 'cron' keyfi olarak # seçilmiştir; Gerçek tür 'Tür' özniteliği ile belirtilir. # - 'DirectWriterolloverstrategy' belirtilmediğinden otomatik olarak kullanılır. ek.Catalina.Type = RollingFile Appender.Catalina.Name = RollingFile-Catalina Appender.Catalina.filepattern = $/logs/catalina.$ $.log appender.Catalina.düzen.type = PatternLayout Apender.Catalina.düzen.desen = $ appender.Catalina.politikalar.Type = Politikalar Apender.Catalina.politikalar.crron.type = cronriggingpolicy appender.Catalina.politikalar.crron.Schedate = $ appender.Catalina.politikalar.crron.DeğerlendirmeTartup = True Appender.Catalina.FilePermissions = RW-R ----- Appender.Catalina.fileowner = tomcat apender.Catalina.FileGroup = ADM Apender.Yerel ev.Type = RollingFile Appender.Yerel ev.Name = RollingFile-Localhost Appender.Yerel ev.filepattern = $/logs/localhost.$ $.log appender.Yerel ev.düzen.type = PatternLayout Apender.Yerel ev.düzen.desen = $ appender.Yerel ev.politikalar.Type = Politikalar Apender.Yerel ev.politikalar.crron.type = cronriggingpolicy appender.Yerel ev.politikalar.crron.Schedate = $ appender.Yerel ev.politikalar.crron.DeğerlendirmeTartup = True Appender.Yerel ev.FilePermissions = RW-R ----- Appender.Yerel ev.fileowner = tomcat apender.Yerel ev.FileGroup = ADM # Catalina'ya oturum açmaya devam etmek istiyorsanız.Log4j2'yi devraldıktan sonra dışarı. #Apender.KONSOL.type = konsol #Appender.KONSOL.Name = stdout #Appender.KONSOL.düzen.type = desenLayout ## hangi girişçiliklerin günlüğe kaydedildiği yapılandırın.Level = $ rootlogger.AppenderRef.Catalina.Ref = RollingFile-Catalina #rootlogger.AppenderRef.stdout.Ref = stdout # Burada, tanımlayıcı içeriyor '.'Karakterler, bu yüzden listeyi belirtmeliyiz. logers = org.apache.Catalina.çekirdek.Konteyner tabanı.[Catalina].[localhost] logger.org.apache.Catalina.çekirdek.Konteyner tabanı.[Catalina].[Localhost].Name = Localhost Logger.org.apache.Catalina.çekirdek.Konteyner tabanı.[Catalina].[Localhost].Level = $ logger.org.apache.Catalina.çekirdek.Konteyner tabanı.[Catalina].[Localhost].AppenderRef.Yerel ev.Ref = RollingFile-Localhost
Log4J2’yi kullanmamın temel nedeni, aylık günlük rotasyonunu elde edebilmekti, ancak Tomcat’i yeniden başlatmadan bile her şeyi istediğiniz gibi kolayca ayarlayabilirsiniz.