Loglama
Log4j gibi çatılar genellikle debug,error gibi kodu ilgilendiren durumlar için kullanılır. Loglama sadece koddan ibaret bir kavram değildir. Bir çok yazılımda Audit_Log, System_Log gibi yapılan hareketleri, sistemin kaynak, sağlık kullanımını kaydeden loglar da mevcuttur.
Log4J
1. Kavram - Appender
FileAppender ve RollingFileAppender en çok kullanılanları. Her Appender bir PatternLayout kullanır.
XML Olarak bazı Appender ayarları şöyle
FileAppender
Örnek:
RollingFileAppender
Log4Net xml ayarları ile Log4J xml ayarları benziyorlar ancak birebir aynı değiller.
Log4Net örneği:
Satırın örüntüsünü belirtir. İki temel layout var. PatternLayout ile örüntüyü kendimiz belirleriz. SimpleLayout daha basittir.
3. Kavram - Logger
Logger bir isme sahip olan ve kendisine verilen log mesajı belirtilen loglama seviyesinden yukarıda ise appenderları çağıran sınıf. Logger birden fazla appendera sahip olabilir.
XML Olarak Logger Ayarları
Log4j örneği
LogManager
Log4net'de bir Logger'ı almak için kullanılabilir.
LogManager.GetLogger(typeof(MyType))
RootLogger
Logger sınıfının getRootLogger() metodu ile alınır. RootLogger aşağıdaki gibi kullanılabilir.
Sınıf için logger
Log4j için Logger sınıfının getLogger() metoduna sınıf verilerek alınır. Örnek:
Loglama seviyesine göre metodlar var.
logger.debug(...)
Bu metodlar bir enum ile gerçek loglama metodunu çağırıyorlar.
logger.log(DEBUG, ...)
Ayarları Okutturmak
C# ile app.config içindeki ayarlı şöyle okutturulur.
Kernel Log Mesajları
Linux'ta kernel mesajlarını görme konusu da loglama ile ilgili olduğu için konuyu buraya ekledim.
dmesg komutu ile kernel loglarını görebilme imkanı var. dmesg kernel içindeki etkin logları gösterir.
/var/log/dmesg ise eski logları gösterir.
Bir diğer yöntem ise kodla kernel mesajlarının console gönderilmesi. Bunun için ioctl (0,TIOCLINUX...) kullanılıyor. Örnek:
Log4j gibi çatılar genellikle debug,error gibi kodu ilgilendiren durumlar için kullanılır. Loglama sadece koddan ibaret bir kavram değildir. Bir çok yazılımda Audit_Log, System_Log gibi yapılan hareketleri, sistemin kaynak, sağlık kullanımını kaydeden loglar da mevcuttur.
Log4J
1. Kavram - Appender
FileAppender ve RollingFileAppender en çok kullanılanları. Her Appender bir PatternLayout kullanır.
XML Olarak bazı Appender ayarları şöyle
FileAppender
Örnek:
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="c:\\ PeejayImpex.log"/>
<!-- Example using environment variables in params -->
<!-- <param name="File" value="${TMP}\\ApplicationKit.log" /> -->
<param name="AppendToFile" value="true"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-2p %c [%x] - %m%n"/>
</layout>
</appender>
RollingFileAppender
Log4Net xml ayarları ile Log4J xml ayarları benziyorlar ancak birebir aynı değiller.
Log4Net örneği:
<appender name="MyAppender" type="log4net.Appender.RollingFileAppender">
<file value="log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline" />
</layout>
</appender>
Log4J örneği:<appender name="default" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${log.dir}/logs/serverout.txt" />
<param name ="Append" value="TRUE"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{[HH:mm:ss:SSS]|[MM-dd-yyyy]}|[%c]|[%p]|[%L]: %m|%n"/>
</layout>
<param name="MaxFileSize" value="10MB"/>
<param name="MaxBackupIndex" value="100"/>
</appender>
2. Kavram - LayoutSatırın örüntüsünü belirtir. İki temel layout var. PatternLayout ile örüntüyü kendimiz belirleriz. SimpleLayout daha basittir.
3. Kavram - Logger
Logger bir isme sahip olan ve kendisine verilen log mesajı belirtilen loglama seviyesinden yukarıda ise appenderları çağıran sınıf. Logger birden fazla appendera sahip olabilir.
Log4j örneği
<logger name="com.mypackage" additivity="false">
<level value="INFO"/>
<appender-ref ref="default"/>
</logger>
LogManager
Log4net'de bir Logger'ı almak için kullanılabilir.
LogManager.GetLogger(typeof(MyType))
RootLogger
Logger sınıfının getRootLogger() metodu ile alınır. RootLogger aşağıdaki gibi kullanılabilir.
Logger rootLogger = Logger.getRootLogger();
String level = arg[0];
rootLogger.setLevel(levelmap.get(level));
Sınıf için logger
Log4j için Logger sınıfının getLogger() metoduna sınıf verilerek alınır. Örnek:
static Logger log = Logger.getLogger(Log4jExample.class.getName());
4. Kavram Loglama SeviyesiLoglama seviyesine göre metodlar var.
logger.debug(...)
Bu metodlar bir enum ile gerçek loglama metodunu çağırıyorlar.
logger.log(DEBUG, ...)
Ayarları Okutturmak
C# ile app.config içindeki ayarlı şöyle okutturulur.
log4net.Config.XmlConfigurator.Configure();
Kernel Log Mesajları
Linux'ta kernel mesajlarını görme konusu da loglama ile ilgili olduğu için konuyu buraya ekledim.
dmesg komutu ile kernel loglarını görebilme imkanı var. dmesg kernel içindeki etkin logları gösterir.
/var/log/dmesg ise eski logları gösterir.
Bir diğer yöntem ise kodla kernel mesajlarının console gönderilmesi. Bunun için ioctl (0,TIOCLINUX...) kullanılıyor. Örnek:
Hiç yorum yok:
Yorum Gönder