Suche senden
Hochladen
Log4j 2 source code reading
•
3 gefällt mir
•
1,855 views
Go Tanaka
Folgen
Technologie
Business
Melden
Teilen
Melden
Teilen
1 von 18
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Log4j 2 writing
Log4j 2 writing
Go Tanaka
NIO.2を使って簡単ファイル操作
NIO.2を使って簡単ファイル操作
Yuichi Sakuraba
from old Java to modern Java
from old Java to modern Java
心 谷本
A Prolog To Java Translator System And Its Application
A Prolog To Java Translator System And Its Application
guestc68147
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
Tusyoshi Matsuzaki
Log4j in 8 slides
Log4j in 8 slides
Tarin Gamberini
CPU
CPU
Go Tanaka
Log4j Logging Mechanism
Log4j Logging Mechanism
Kunal Dabir
Empfohlen
Log4j 2 writing
Log4j 2 writing
Go Tanaka
NIO.2を使って簡単ファイル操作
NIO.2を使って簡単ファイル操作
Yuichi Sakuraba
from old Java to modern Java
from old Java to modern Java
心 谷本
A Prolog To Java Translator System And Its Application
A Prolog To Java Translator System And Its Application
guestc68147
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
Tusyoshi Matsuzaki
Log4j in 8 slides
Log4j in 8 slides
Tarin Gamberini
CPU
CPU
Go Tanaka
Log4j Logging Mechanism
Log4j Logging Mechanism
Kunal Dabir
DevLOVE Kansai KnockoutJS
DevLOVE Kansai KnockoutJS
Go Tanaka
Jvm internal
Jvm internal
Go Tanaka
Knockout handson
Knockout handson
Go Tanaka
Knockout bindings
Knockout bindings
Go Tanaka
Implement curry
Implement curry
Go Tanaka
InvokeDynamic at #shikadriven 2012
InvokeDynamic at #shikadriven 2012
Go Tanaka
Studying Network #1
Studying Network #1
Go Tanaka
Inside The Java Virtual Machine
Inside The Java Virtual Machine
Go Tanaka
FxUG HTML5
FxUG HTML5
Go Tanaka
Nettyらへん
Nettyらへん
Go Tanaka
T2 reading 20101126
T2 reading 20101126
Go Tanaka
Kanjava20110302
Kanjava20110302
Go Tanaka
GWT♥HTML5
GWT♥HTML5
Go Tanaka
Slim3 Gwt In Action
Slim3 Gwt In Action
Go Tanaka
はじめてのPHP
はじめてのPHP
Go Tanaka
T2 - 関ジャバ1月27日
T2 - 関ジャバ1月27日
Go Tanaka
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Weitere ähnliche Inhalte
Mehr von Go Tanaka
DevLOVE Kansai KnockoutJS
DevLOVE Kansai KnockoutJS
Go Tanaka
Jvm internal
Jvm internal
Go Tanaka
Knockout handson
Knockout handson
Go Tanaka
Knockout bindings
Knockout bindings
Go Tanaka
Implement curry
Implement curry
Go Tanaka
InvokeDynamic at #shikadriven 2012
InvokeDynamic at #shikadriven 2012
Go Tanaka
Studying Network #1
Studying Network #1
Go Tanaka
Inside The Java Virtual Machine
Inside The Java Virtual Machine
Go Tanaka
FxUG HTML5
FxUG HTML5
Go Tanaka
Nettyらへん
Nettyらへん
Go Tanaka
T2 reading 20101126
T2 reading 20101126
Go Tanaka
Kanjava20110302
Kanjava20110302
Go Tanaka
GWT♥HTML5
GWT♥HTML5
Go Tanaka
Slim3 Gwt In Action
Slim3 Gwt In Action
Go Tanaka
はじめてのPHP
はじめてのPHP
Go Tanaka
T2 - 関ジャバ1月27日
T2 - 関ジャバ1月27日
Go Tanaka
Mehr von Go Tanaka
(16)
DevLOVE Kansai KnockoutJS
DevLOVE Kansai KnockoutJS
Jvm internal
Jvm internal
Knockout handson
Knockout handson
Knockout bindings
Knockout bindings
Implement curry
Implement curry
InvokeDynamic at #shikadriven 2012
InvokeDynamic at #shikadriven 2012
Studying Network #1
Studying Network #1
Inside The Java Virtual Machine
Inside The Java Virtual Machine
FxUG HTML5
FxUG HTML5
Nettyらへん
Nettyらへん
T2 reading 20101126
T2 reading 20101126
Kanjava20110302
Kanjava20110302
GWT♥HTML5
GWT♥HTML5
Slim3 Gwt In Action
Slim3 Gwt In Action
はじめてのPHP
はじめてのPHP
T2 - 関ジャバ1月27日
T2 - 関ジャバ1月27日
Kürzlich hochgeladen
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Kürzlich hochgeladen
(10)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
Log4j 2 source code reading
1.
Log4Jソースコードリーディング
2012.09.22 (sat) at PLUGRAM, Inc. 12年9月23日日曜日
2.
社内勉強会 Log4J
Log4J ログ出力 専用ライブラリ 何ができるの? ・パッケージでフィルタリング ・ログレベルでフィルタリング ・ログ出力先をカスタマイズ ・ログ出力レイアウトをカスタマイズ COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
3.
社内勉強会 Log4J
つかいかた package com.plugram.log4j.foo; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.plugram.log4j.bar.MyNewApp; public class Main { static Logger logger = LogManager.getLogger(Main.class.getName()); public static void main(String[] args) { new Main().run(); } public void run() { logger.trace("Entering application."); MyNewApp app = new MyNewApp(); if (app.doIt()) { logger.error("Just do it."); } logger.trace("Exiting application."); } } COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
4.
社内勉強会 Log4J
つかいかた <?xml version="1.0" encoding="UTF-8"?> <configuration status="off"> <appenders> 出力レイアウト <Console name="Console" target="SYSTEM_OUT"> 出力先 <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </appenders> <loggers> <!-- <logger name="com.plugram.log4j.foo" level="error"> <appender-ref ref="Console"/> </logger> パッケージ名でフィルタリング <logger name="com.plugram.log4j.bar" level="error"> <appender-ref ref="Console"/> </logger> --> <root level="trace"> ログレベルでフィルタリング <appender-ref ref="Console"/> </root> </loggers> </configuration> COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
5.
社内勉強会 Log4J
Log4J 2 http://logging.apache.org/log4j/2.x/manual/architecture.html COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
6.
社内勉強会 Log4J
ログ出力までの流れ package com.plugram.log4j.foo; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.plugram.log4j.bar.MyNewApp; public class Main { static Logger logger = LogManager.getLogger(Main.class.getName()); public static void main(String[] args) { new Main().run(); } public void run() { logger.trace("Entering application."); MyNewApp bar = new MyNewApp(); if (bar.doIt()) { logger.error("Just do it."); } logger.trace("Exiting application."); } } COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
7.
社内勉強会 Log4J
ログ出力までの流れ package com.plugram.log4j.foo; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.plugram.log4j.bar.MyNewApp; public class Main { static Logger logger = LogManager.getLogger(Main.class.getName()); public static void main(String[] args) { LogManager new Main().run(); } public static Logger getLogger(String name) { return factory.getContext(LogManager.class.getName(), null, false).getLogger(name); public void run() { } logger.trace("Entering application."); MyNewApp bar = new MyNewApp(); if (bar.doIt()) { org.apache.logging.log4j.core.LoggerContext logger.error("Just do it."); } logger.trace("Exiting application."); org.apache.logging.log4j.core.Logger } } COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
8.
社内勉強会 Log4J
ログ出力までの流れ package com.plugram.log4j.foo; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.plugram.log4j.bar.MyNewApp; public class Main { static Logger logger = LogManager.getLogger(Main.class.getName()); public static void main(String[] args) { new Main().run(); } public void run() { logger.trace("Entering application."); MyNewApp bar = new MyNewApp(); if (bar.doIt()) { logger.error("Just do it."); } logger.trace("Exiting application."); } } COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
9.
社内勉強会 Log4J
ログ出力までの流れ package com.plugram.log4j.foo; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.plugram.log4j.bar.MyNewApp; public class Main { static Logger logger = LogManager.getLogger(Main.class.getName()); public static void main(String[] args) { new Main().run(); } public void run() { logger.trace("Entering application."); MyNewApp bar = new MyNewApp(); AbstractLogger if (bar.doIt()) { logger.error("Just do it."); public void trace(String message) { } if (isEnabled(Level.TRACE, null, message)) { logger.trace("Exiting application."); log(null, FQCN, Level.TRACE, new SimpleMessage(message), null); } } } } COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
10.
社内勉強会 Log4J
ログ出力までの流れ AbstractLogger public void trace(String message) { if (isEnabled(Level.TRACE, null, message)) { log(null, FQCN, Level.TRACE, new SimpleMessage(message), null); } } core.Logger @Override public void log(Marker marker, String fqcn, Level level, Message data, Throwable t) { if (data == null) { data = new SimpleMessage(""); } config.config.getConfigurationMonitor().checkConfiguration(); config.loggerConfig.log(name, marker, fqcn, level, data, t); } COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
11.
社内勉強会 Log4J
ログ出力までの流れ core.Logger @Override public void log(Marker marker, String fqcn, Level level, Message data, Throwable t) { if (data == null) { data = new SimpleMessage(""); } config.config.getConfigurationMonitor().checkConfiguration(); config.loggerConfig.log(name, marker, fqcn, level, data, t); } core.LoggerConfig public void log(String loggerName, Marker marker, String fqcn, Level level, Message data, Throwable t) { LogEvent event = logEventFactory.createEvent(loggerName, marker, fqcn, level, data, t); log(event); } COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
12.
社内勉強会 Log4J
ログ出力までの流れ core.LoggerConfig public void log(LogEvent event) { counter.incrementAndGet(); try { if (isFiltered(event)) { return; } callAppenders(event); if (additive && parent != null) { parent.log(event); } } finally { if (counter.decrementAndGet() == 0) { synchronized (this) { if (shutdown) { notifyAll(); } } } } } COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
13.
社内勉強会 Log4J
読んでみよう ・出力レイアウトの設定方法 ・出力先の設定方法 ・パッケージ名でのフィルタリング ・ログレベルでのフィルタリング COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
14.
社内勉強会 Log4J
出力レイアウトの設定方法 core.LoggerContext private volatile Configuration config = new DefaultConfiguration(); core.DefaultConfiguration public DefaultConfiguration() { setName(DEFAULT_NAME); Layout layout = PatternLayout.createLayout("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n", null, null, null); Appender appender = ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "true"); addAppender(appender); LoggerConfig root = getRootLogger(); root.addAppender(appender, null, null); String l = System.getProperty(DEFAULT_LEVEL); Level level = (l != null && Level.valueOf(l) != null) ? Level.valueOf(l) : Level.ERROR; root.setLevel(level); } COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
15.
社内勉強会 Log4J
出力レイアウトの設定方法 core.layout.PatternLayout @PluginFactory public static PatternLayout createLayout(@PluginAttr("pattern") String pattern, @PluginConfiguration Configuration config, @PluginElement("replace") RegexReplacement replace, @PluginAttr("charset") String charset) { Charset c = Charset.isSupported("UTF-8") ? Charset.forName("UTF-8") : Charset.defaultCharset(); if (charset != null) { if (Charset.isSupported(charset)) { c = Charset.forName(charset); } else { LOGGER.error("Charset " + charset + " is not supported for layout, using " + c.displayName()); } } return new PatternLayout(config, replace, pattern == null ? DEFAULT_CONVERSION_PATTERN : pattern, c); } private PatternLayout(Configuration config, final RegexReplacement replace, final String pattern, final Charset charset) { super(charset); this.replace = replace; this.conversionPattern = pattern; this.config = config; PatternParser parser = createPatternParser(config); formatters = parser.parse((pattern == null) ? DEFAULT_CONVERSION_PATTERN : pattern); handlesExceptions = parser.handlesExceptions(); } COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
16.
社内勉強会 Log4J
出力レイアウトの設定方法(利用してるところ) core.appender.OutputStreamAppender public void append(LogEvent event) { readLock.lock(); try { manager.write(getLayout().format(event)); if (this.immediateFlush) { manager.flush(); } } catch (AppenderRuntimeException ex) { error("Unable to write to stream " + manager.getName() + " for appender " + getName()); throw ex; } finally { core.layout.PatternLayout readLock.unlock(); } } public String formatAs(final LogEvent event) { StringBuilder buf = new StringBuilder(); for (PatternFormatter formatter : formatters) { formatter.format(event, buf); } core.layout.AbstractStringLayout String str = buf.toString(); if (replace != null) { str = replace.format(str); public byte[] format(LogEvent event) { } return encoder.getBytes(formatAs(event)); return config == null ? str : config.getSubst().replace(event, str); } } COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
17.
社内勉強会 Log4J
読んでみよう ・出力レイアウトの設定方法 同じように読んでみよう ・出力先の設定方法 ・パッケージ名でのフィルタリング ・ログレベルでのフィルタリング COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
18.
社内勉強会 Log4J
ありがとうございました COPYRIGHT 2012 PLUGRAM, Inc. 12年9月23日日曜日
Jetzt herunterladen