手把手教你如何串接 log 到各種網路服務
TRANSCRIPT
![Page 1: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/1.jpg)
手把手教你如何串接 log 到各種網路服務Kewang
![Page 2: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/2.jpg)
Who I am
● 王慕羣● Java / Node.js / AngularJS● HBase / SQL-like● Git / DevOps
kewang @ GitHubkewang.information @ Facebookkewangtw @ Linkedinkewang @ SlideSharecpckewang @ Gmail
HadoopCon '14, '15MOPCON '14
![Page 3: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/3.jpg)
What Mitake is
三竹資訊● Qmi:企業內部即時通訊軟體● 全國最大的企業簡訊平台● 市佔近 100% 的行動下單● 市佔近 70% 的行動銀行● 企業內部應用、產壽險、金融相關政府機關● 其他:兌彩券、台灣匯率、三竹小股王、行動股市 ... 等
![Page 4: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/4.jpg)
4
Agenda
![Page 5: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/5.jpg)
5
Agenda
● 各 logger framework 簡單介紹
![Page 6: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/6.jpg)
6
Agenda
● 各 logger framework 簡單介紹● logback 內部架構
![Page 7: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/7.jpg)
7
Agenda
● 各 logger framework 簡單介紹● logback 內部架構● 如何用 logback 串接網路服務
![Page 8: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/8.jpg)
8
各 logger framework 簡單介紹interface & implementation
![Page 9: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/9.jpg)
9
logger framework
![Page 10: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/10.jpg)
10
logger framework
● slf4j
![Page 11: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/11.jpg)
11
logger framework
● slf4j● jcl
![Page 12: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/12.jpg)
12
logger framework
● slf4j● jcl● jul
![Page 13: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/13.jpg)
13
logger framework
● slf4j● jcl● jul● Log4j 1
![Page 14: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/14.jpg)
14
logger framework
● slf4j● jcl● jul● Log4j 1● Log4j 2
![Page 15: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/15.jpg)
15
logger framework
● slf4j● jcl● jul● Log4j 1● Log4j 2● Logback
![Page 16: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/16.jpg)
16
![Page 17: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/17.jpg)
17
logger 分類 - Interface
![Page 18: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/18.jpg)
18
logger 分類 - Interface
● slf4j - Simple Logging Facade for Java– 利用 Facade Pattern 提供一些 logging API ,可以轉換各種不同的 logger implementation
![Page 19: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/19.jpg)
19
logger 分類 - Interface
● slf4j - Simple Logging Facade for Java– 利用 Facade Pattern 提供一些 logging API ,可以轉換各種不同的 logger implementation
● jcl - Jakarta Commons Logging– Apache 開發出與 slf4j 類似功用的 library
![Page 20: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/20.jpg)
20
logger 分類 - Implementation
![Page 21: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/21.jpg)
21
logger 分類 - Implementation
● Logback - 今日主角
![Page 22: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/22.jpg)
22
logger 分類 - Implementation
● Logback - 今日主角● jul - java.util.logging
– Java 1.4 之後的內建 logger API
![Page 23: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/23.jpg)
23
logger 分類 - Implementation
● Logback - 今日主角● jul - java.util.logging
– Java 1.4 之後的內建 logger API● Log4j 1 - logging library for Java
– EOL @ 2015/8/5
![Page 24: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/24.jpg)
24
logger 分類 - Implementation
● Logback - 今日主角● jul - java.util.logging
– Java 1.4 之後的內建 logger API● Log4j 1 - logging library for Java
– EOL @ 2015/8/5● Log4j 2 - Interface + Implementation
![Page 25: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/25.jpg)
25
![Page 26: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/26.jpg)
26
logback 內部架構
![Page 27: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/27.jpg)
27
Architecture
![Page 28: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/28.jpg)
28
Architecture
● Logger– effective level– basic selection rule
![Page 29: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/29.jpg)
29
Architecture
● Logger– effective level– basic selection rule
● Appender– output destination– i.e. console, files, remote socket servers, DB, JMS, and
remote UNIX Syslog daemons
![Page 30: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/30.jpg)
30
Architecture
● Logger– effective level– basic selection rule
● Appender– output destination– i.e. console, files, remote socket servers, DB, JMS, and remote
UNIX Syslog daemons● Layout
– formatting the event to string
![Page 31: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/31.jpg)
31
Architecture - flow
● Get the filter chain decision● Apply the basic selection rule● Create a LoggingEvent object● Invoking appenders● Formatting the output● Sending out the LoggingEvent
![Page 32: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/32.jpg)
32
Architecture - sequence diagram
![Page 33: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/33.jpg)
33
Architecture - sequence diagram
![Page 34: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/34.jpg)
34
如何用 logback 串接網路服務
![Page 35: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/35.jpg)
35
logback.xml - 給使用者看的
![Page 36: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/36.jpg)
36
logback.xml - 給使用者看的<appender name="REDMINE" class="example.MyOwnAppender"> <url>http://example.com</url> <apiKey>abcdef1234567890</apiKey> <projectId>5566</projectId> <title>Logback Redmine Appender</title> <onlyError>true</onlyError> <encoder class="c.q.l.c.e.PatternLayoutEncoder"> <pattern>${PATTERN}</pattern> <charset>${CHARSET}</charset> </encoder></appender>
![Page 37: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/37.jpg)
37
logback.xml - 注意事項
![Page 38: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/38.jpg)
38
logback.xml - 注意事項● camelCase
![Page 39: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/39.jpg)
39
logback.xml - 注意事項● camelCase● follow the setter/getter JavaBeans conventions
![Page 40: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/40.jpg)
40
logback.xml - 注意事項● camelCase● follow the setter/getter JavaBeans conventions● only tag, no attribute
![Page 41: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/41.jpg)
41
logback.xml - 注意事項● camelCase● follow the setter/getter JavaBeans conventions● only tag, no attribute● Joran
![Page 42: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/42.jpg)
42
Template - 給開發者看的MyOwnAppender extends AppenderBase<ILoggingEvent> {
@Override protected void append(ILoggingEvent event) { }}
write log
![Page 43: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/43.jpg)
43
Template - 給開發者看的MyOwnAppender extends AppenderBase<ILoggingEvent> { @Override public void start() { super.start(); }
@Override protected void append(ILoggingEvent event) { }}
initialization
![Page 44: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/44.jpg)
44
start() - initialization
![Page 45: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/45.jpg)
45
start() - initialization
super.start();
![Page 46: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/46.jpg)
46
start() - initialization
if (!checkProperties()) { addError("Some message");
return;}
super.start();
![Page 47: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/47.jpg)
47
start() - initialization
if (!checkProperties()) { addError("Some message");
return;}
encoder.init(System.out);
super.start();
![Page 48: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/48.jpg)
48
start() - initialization
if (!checkProperties()) { addError("Some message");
return;}
encoder.init(System.out);
layout = encoder.getLayout();
super.start();
![Page 49: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/49.jpg)
49
start() - initialization
if (!checkProperties()) { addError("Some message");
return;}
encoder.init(System.out);
layout = encoder.getLayout();
initialProperties();
super.start();
![Page 50: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/50.jpg)
50
append(ILoggingEvent) - write log
![Page 51: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/51.jpg)
51
append(ILoggingEvent) - write log
String log = decorateLog(event);
![Page 52: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/52.jpg)
52
append(ILoggingEvent) - write log
String log = decorateLog(event);
writeLogToSomewhere(log);
![Page 53: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/53.jpg)
53
StackTraces
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught: java.lang.RuntimeException: Oops
at com.hello.AppTest.testSms(AppTest.java:13)
![Page 54: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/54.jpg)
54
ILoggingEvent
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught:
![Page 55: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/55.jpg)
55
ILoggingEvent
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught:
event.getTimestamp()
![Page 56: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/56.jpg)
56
ILoggingEvent
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught:
event.getTimestamp()
event.getThreadName()
![Page 57: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/57.jpg)
57
ILoggingEvent
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught:
event.getTimestamp()
event.getThreadName()
event.getLevel()
![Page 58: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/58.jpg)
58
ILoggingEvent
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught:
event.getTimestamp()
event.getThreadName()
event.getLevel()
event.getLoggerName()
![Page 59: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/59.jpg)
59
ILoggingEvent
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught:
event.getTimestamp()
event.getThreadName()
event.getLevel()
event.getLoggerName()
event.getMessage()
![Page 60: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/60.jpg)
60
ILoggingEvent
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught:
event.getTimestamp()
event.getThreadName()
event.getLevel()
event.getLoggerName()
event.getMessage()
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg
![Page 61: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/61.jpg)
61
IThrowableProxy
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught: java.lang.RuntimeException: Oops
event.getThrowableProxy()
![Page 62: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/62.jpg)
62
IThrowableProxy
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught: java.lang.RuntimeException: Oops
proxy.getClassName()
event.getThrowableProxy()
![Page 63: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/63.jpg)
63
IThrowableProxy
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught: java.lang.RuntimeException: Oops
proxy.getClassName()
proxy.getMessage()
event.getThrowableProxy()
![Page 64: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/64.jpg)
64
StackTraceElement
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught: java.lang.RuntimeException: Oops
at com.hello.AppTest.testSms(AppTest.java:13)
proxy .getStackTraceElementProxyArray()[n] .getStackTraceElement()
![Page 65: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/65.jpg)
65
StackTraceElement
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught: java.lang.RuntimeException: Oops
at com.hello.AppTest.testSms(AppTest.java:13)
elem.getClassName()
proxy .getStackTraceElementProxyArray()[n] .getStackTraceElement()
![Page 66: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/66.jpg)
66
StackTraceElement
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught: java.lang.RuntimeException: Oops
at com.hello.AppTest.testSms(AppTest.java:13)
elem.getClassName()
elem.getMethodName()
proxy .getStackTraceElementProxyArray()[n] .getStackTraceElement()
![Page 67: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/67.jpg)
67
StackTraceElement
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught: java.lang.RuntimeException: Oops
at com.hello.AppTest.testSms(AppTest.java:13)
elem.getClassName()
elem.getMethodName()
elem.getFileName()
proxy .getStackTraceElementProxyArray()[n] .getStackTraceElement()
![Page 68: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/68.jpg)
68
StackTraceElement
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught: java.lang.RuntimeException: Oops
at com.hello.AppTest.testSms(AppTest.java:13)
elem.getClassName()
elem.getMethodName()
elem.getFileName()
elem.getLineNumber()
proxy .getStackTraceElementProxyArray()[n] .getStackTraceElement()
![Page 69: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/69.jpg)
69
StackTraceElement
2016-10-03 22:00:09.174 [main] ERROR com.hello.Test - Caught: java.lang.RuntimeException: Oops
at com.hello.AppTest.testSms(AppTest.java:13)
elem.toString()
proxy .getStackTraceElementProxyArray()[n] .getStackTraceElement()
![Page 70: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/70.jpg)
70
Appenders @ kewang
![Page 71: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/71.jpg)
71
Appenders @ kewang
● logback-redmine-appender
● logback-sms-appender
![Page 72: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/72.jpg)
72
Appenders @ kewang
● logback-redmine-appender– merge the same StackTraces @ one issue
● logback-sms-appender
![Page 73: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/73.jpg)
73
Appenders @ kewang
● logback-redmine-appender– merge the same StackTraces @ one issue– link StackTraces with git repo
● logback-sms-appender
![Page 74: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/74.jpg)
74
Appenders @ kewang
● logback-redmine-appender– merge the same StackTraces @ one issue– link StackTraces with git repo– nested tag
● logback-sms-appender
![Page 75: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/75.jpg)
75
Appenders @ kewang
● logback-redmine-appender– merge the same StackTraces @ one issue– link StackTraces with git repo– nested tag
● logback-sms-appender– custom output
![Page 76: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/76.jpg)
76
Appenders @ kewang
● logback-redmine-appender– merge the same StackTraces @ one issue– link StackTraces with git repo– nested tag
● logback-sms-appender– custom output– only append ERROR level
![Page 77: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/77.jpg)
77
Live DEMO
![Page 78: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/78.jpg)
78
One more thing
![Page 80: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/80.jpg)
80
Live DEMO
![Page 81: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/81.jpg)
81
Features
![Page 82: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/82.jpg)
82
Features
● one AP, multiple environments
![Page 83: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/83.jpg)
83
Features
● one AP, multiple environments● one environment, multiple subscriptions
![Page 84: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/84.jpg)
84
Features
● one AP, multiple environments● one environment, multiple subscriptions● RESTful API
![Page 85: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/85.jpg)
85
Features
● one AP, multiple environments● one environment, multiple subscriptions● RESTful API● ...... etc.
![Page 86: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/86.jpg)
86
logback-logpush-appender
<dependency> <groupId>io.logpush</groupId> <artifactId>logback-logpush-appender</artifactId> <version>0.1.0</version></dependency>
pom.xml
![Page 87: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/87.jpg)
87
logback-logpush-appender
<appender name="LOGPUSH" class="i.l.l.a.LogpushAppender"> <token>THIS_IS_LOGPUSH_TOKEN</token> <onlyError>true</onlyError> <encoder class="c.q.l.c.e.PatternLayoutEncoder"> <pattern>${PATTERN}</pattern> <charset>${CHARSET}</charset> </encoder></appender>
logback.xml
![Page 88: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/88.jpg)
88
Definition
● AP● Logpush Server● Firebase Cloud Messaging● Mobile device
![Page 89: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/89.jpg)
89
Log flow
Firebase Cloud MessagingLogpush Server
Mobile deviceAP
![Page 90: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/90.jpg)
90
Log flow - send log to Logpush
Firebase Cloud MessagingLogpush Server
Mobile deviceAP
send log via appender
![Page 91: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/91.jpg)
91
Log flow - send msg to FCM
Firebase Cloud MessagingLogpush Server
Mobile deviceAP
send
send log via appender
![Page 92: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/92.jpg)
92
Log flow - send log to subscription
Firebase Cloud MessagingLogpush Server
Mobile deviceAP
send
receivesend log via appender
![Page 93: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/93.jpg)
93
Log flow - other features
Firebase Cloud MessagingLogpush Server
Mobile deviceAP
send
receivesend log via appender RESTful
API
![Page 94: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/94.jpg)
94
![Page 95: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/95.jpg)
95
早期版本,請小力鞭
![Page 96: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/96.jpg)
96
早期版本,請小力鞭
![Page 97: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/97.jpg)
97
References
● http://logpush.io● Logback● jdk-logging log4j logback、 、 日志介绍及原理● slf4j jcl jul log4j1 log4j2 logback、 、 、 、 、 大总结● Log4j Log4j 2 Logback SFL4J JUL JCL、 、 、 、 、 的比较
![Page 98: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/98.jpg)
98
![Page 99: 手把手教你如何串接 Log 到各種網路服務](https://reader031.vdocuments.site/reader031/viewer/2022012401/58729f7f1a28ab07208b56d1/html5/thumbnails/99.jpg)
99