Skip to content

Commit f428ef4

Browse files
authored
Introduce logging extension: slf4j (alibaba#1344)
1 parent d04f442 commit f428ef4

File tree

9 files changed

+532
-0
lines changed

9 files changed

+532
-0
lines changed

sentinel-extension/pom.xml

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
<module>sentinel-datasource-spring-cloud-config</module>
2323
<module>sentinel-datasource-consul</module>
2424
<module>sentinel-datasource-etcd</module>
25+
<module>sentinel-logging-extension-slf4j</module>
2526
</modules>
2627

2728
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Sentinel Logging Extension SLF4J
2+
3+
To use Sentinel Logging Extension SLF4J with Log4j2, you should add the following dependency firstly:
4+
5+
```xml
6+
<dependency>
7+
<groupId>com.alibaba.csp</groupId>
8+
<artifactId>sentinel-logging-extension-slf4j</artifactId>
9+
<version>x.y.z</version>
10+
</dependency>
11+
<dependency>
12+
<groupId>org.slf4j</groupId>
13+
<artifactId>slf4j-api</artifactId>
14+
<version>${slf4j.version}</version>
15+
</dependency>
16+
```
17+
If you want to use Slf4j with Log4j2, you can add dependencies of Log4j2 and the binding about Log4j2 and SLF4J.
18+
Then you should provide logging configuration as specification of the logging framework.
19+
And you can add Sentinel's Loggers that it name is `sentinelRecordLogger` or `sentinelCommandCenterLogger` for your needs. For example:
20+
21+
```xml
22+
<?xml version="1.0" encoding="UTF-8" ?>
23+
<Configuration>
24+
<Appenders>
25+
<Console name="Console" target="SYSTEM_OUT">
26+
<PatternLayout pattern="%-5level %logger - %msg%n"/>
27+
</Console>
28+
<File name="FILE" fileName="sentinel-record.log" append="false">
29+
<PatternLayout pattern="%-5level %logger - %msg%n"/>
30+
</File>
31+
<File name="FILE2" fileName="sentinel-command-center.log" append="false">
32+
<PatternLayout pattern="%-5level %logger - %msg%n"/>
33+
</File>
34+
</Appenders>
35+
<Loggers>
36+
<Root level="info"/>
37+
<logger name="sentinelRecordLogger" level="trace">
38+
<appender-ref ref="Console" />
39+
<appender-ref ref="FILE" />
40+
</logger>
41+
<logger name="sentinelCommandCenterLogger" level="trace">
42+
<appender-ref ref="Console" />
43+
<appender-ref ref="FILE2" />
44+
</logger>
45+
</Loggers>
46+
</Configuration>
47+
```
48+
49+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>sentinel-parent</artifactId>
7+
<groupId>com.alibaba.csp</groupId>
8+
<version>1.7.2-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>sentinel-logging-extension-slf4j</artifactId>
13+
<packaging>jar</packaging>
14+
15+
<properties>
16+
<java.source.version>1.7</java.source.version>
17+
<java.target.version>1.7</java.target.version>
18+
<slf4j.version>1.7.25</slf4j.version>
19+
<log4j2.version>2.12.1</log4j2.version>
20+
</properties>
21+
22+
<dependencies>
23+
<dependency>
24+
<groupId>com.alibaba.csp</groupId>
25+
<artifactId>sentinel-transport-common</artifactId>
26+
</dependency>
27+
<dependency>
28+
<groupId>org.slf4j</groupId>
29+
<artifactId>slf4j-api</artifactId>
30+
<version>${slf4j.version}</version>
31+
<scope>provided</scope>
32+
</dependency>
33+
<dependency>
34+
<groupId>org.apache.logging.log4j</groupId>
35+
<artifactId>log4j-core</artifactId>
36+
<version>${log4j2.version}</version>
37+
<scope>test</scope>
38+
</dependency>
39+
<dependency>
40+
<groupId>org.apache.logging.log4j</groupId>
41+
<artifactId>log4j-slf4j-impl</artifactId>
42+
<version>${log4j2.version}</version>
43+
<scope>test</scope>
44+
</dependency>
45+
46+
<dependency>
47+
<groupId>junit</groupId>
48+
<artifactId>junit</artifactId>
49+
<scope>test</scope>
50+
</dependency>
51+
52+
<dependency>
53+
<groupId>com.github.stefanbirkner</groupId>
54+
<artifactId>system-rules</artifactId>
55+
<version>1.16.1</version>
56+
<scope>test</scope>
57+
</dependency>
58+
59+
</dependencies>
60+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/*
2+
* Copyright 1999-2018 Alibaba Group Holding Ltd.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package com.alibaba.csp.sentinel.logging.slf4j;
17+
18+
import com.alibaba.csp.sentinel.log.LogTarget;
19+
import com.alibaba.csp.sentinel.log.Logger;
20+
import com.alibaba.csp.sentinel.transport.log.CommandCenterLog;
21+
import org.slf4j.LoggerFactory;
22+
23+
/**
24+
* @author wavesZh
25+
*/
26+
@LogTarget(CommandCenterLog.LOGGER_NAME)
27+
public class CommandCenterLogLogger implements Logger {
28+
29+
private final org.slf4j.Logger logger = LoggerFactory.getLogger(CommandCenterLog.LOGGER_NAME);
30+
31+
@Override
32+
public void info(String format, Object... arguments) {
33+
logger.info(format, arguments);
34+
}
35+
36+
@Override
37+
public void info(String msg, Throwable e) {
38+
logger.info(msg, e);
39+
}
40+
41+
@Override
42+
public void warn(String format, Object... arguments) {
43+
logger.warn(format, arguments);
44+
}
45+
46+
@Override
47+
public void warn(String msg, Throwable e) {
48+
logger.warn(msg, e);
49+
}
50+
51+
@Override
52+
public void trace(String format, Object... arguments) {
53+
logger.trace(format, arguments);
54+
}
55+
56+
@Override
57+
public void trace(String msg, Throwable e) {
58+
logger.trace(msg, e);
59+
}
60+
61+
@Override
62+
public void debug(String format, Object... arguments) {
63+
logger.debug(format, arguments);
64+
}
65+
66+
@Override
67+
public void debug(String msg, Throwable e) {
68+
logger.debug(msg, e);
69+
}
70+
71+
@Override
72+
public void error(String format, Object... arguments) {
73+
logger.error(format, arguments);
74+
}
75+
76+
@Override
77+
public void error(String msg, Throwable e) {
78+
logger.error(msg, e);
79+
}
80+
81+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/*
2+
* Copyright 1999-2018 Alibaba Group Holding Ltd.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package com.alibaba.csp.sentinel.logging.slf4j;
17+
18+
import com.alibaba.csp.sentinel.log.LogTarget;
19+
import com.alibaba.csp.sentinel.log.Logger;
20+
import com.alibaba.csp.sentinel.log.RecordLog;
21+
import org.slf4j.LoggerFactory;
22+
23+
/**
24+
* @author wavesZh
25+
*/
26+
@LogTarget(RecordLog.LOGGER_NAME)
27+
public class RecordLogLogger implements Logger {
28+
29+
private final org.slf4j.Logger logger = LoggerFactory.getLogger(RecordLog.LOGGER_NAME);
30+
31+
@Override
32+
public void info(String format, Object... arguments) {
33+
logger.info(format, arguments);
34+
}
35+
36+
@Override
37+
public void info(String msg, Throwable e) {
38+
logger.info(msg, e);
39+
}
40+
41+
@Override
42+
public void warn(String format, Object... arguments) {
43+
logger.warn(format, arguments);
44+
}
45+
46+
@Override
47+
public void warn(String msg, Throwable e) {
48+
logger.warn(msg, e);
49+
}
50+
51+
@Override
52+
public void trace(String format, Object... arguments) {
53+
logger.trace(format, arguments);
54+
}
55+
56+
@Override
57+
public void trace(String msg, Throwable e) {
58+
logger.trace(msg, e);
59+
}
60+
61+
@Override
62+
public void debug(String format, Object... arguments) {
63+
logger.debug(format, arguments);
64+
}
65+
66+
@Override
67+
public void debug(String msg, Throwable e) {
68+
logger.debug(msg, e);
69+
}
70+
71+
@Override
72+
public void error(String format, Object... arguments) {
73+
logger.error(format, arguments);
74+
}
75+
76+
@Override
77+
public void error(String msg, Throwable e) {
78+
logger.error(msg, e);
79+
}
80+
81+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
com.alibaba.csp.sentinel.logging.slf4j.RecordLogLogger
2+
com.alibaba.csp.sentinel.logging.slf4j.CommandCenterLogLogger

0 commit comments

Comments
 (0)