Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add SLF4J extension #1344

Merged
merged 12 commits into from
Mar 23, 2020
1 change: 1 addition & 0 deletions sentinel-extension/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
<module>sentinel-datasource-spring-cloud-config</module>
<module>sentinel-datasource-consul</module>
<module>sentinel-datasource-etcd</module>
<module>sentinel-logging-extension-slf4j</module>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can just call it sentinel-logging-slf4j for short.

And is it necessary to create a new module in the same level as sentinel-extension called sentinel-logging? Thus some common logic can be put into a package like sentinel-logging-common maybe. Just a proposal and @sczyh30 you can comment it here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea.

Copy link
Collaborator

@jasonjoo2010 jasonjoo2010 Mar 18, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Things change a lot.
So for summary the only undetermined point is:

  • Whether we should create a new module for integrations of logging.

Coming to README.md my opinion is making it simple which is enough. But i am okay if you have different viewpoint.

</modules>

</project>
49 changes: 49 additions & 0 deletions sentinel-extension/sentinel-logging-extension-slf4j/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Sentinel Logging Extension SLF4J

To use Sentinel Logging Extension SLF4J with Log4j2, you should add the following dependency firstly:

```xml
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-logging-extension-slf4j</artifactId>
<version>x.y.z</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
jasonjoo2010 marked this conversation as resolved.
Show resolved Hide resolved
```
If you want to use Slf4j with Log4j2, you can add dependencies of Log4j2 and the binding about Log4j2 and SLF4J.
Then you should provide logging configuration as specification of the logging framework.
And you can add Sentinel's Loggers that it name is `sentinelRecordLogger` or `sentinelCommandCenterLogger` for your needs. For example:

```xml
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%-5level %logger - %msg%n"/>
</Console>
<File name="FILE" fileName="sentinel-record.log" append="false">
<PatternLayout pattern="%-5level %logger - %msg%n"/>
</File>
<File name="FILE2" fileName="sentinel-command-center.log" append="false">
<PatternLayout pattern="%-5level %logger - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="info"/>
<logger name="sentinelRecordLogger" level="trace">
<appender-ref ref="Console" />
<appender-ref ref="FILE" />
</logger>
<logger name="sentinelCommandCenterLogger" level="trace">
<appender-ref ref="Console" />
<appender-ref ref="FILE2" />
</logger>
</Loggers>
</Configuration>
```


60 changes: 60 additions & 0 deletions sentinel-extension/sentinel-logging-extension-slf4j/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>sentinel-parent</artifactId>
<groupId>com.alibaba.csp</groupId>
<version>1.7.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>sentinel-logging-extension-slf4j</artifactId>
<packaging>jar</packaging>

<properties>
<java.source.version>1.7</java.source.version>
<java.target.version>1.7</java.target.version>
<slf4j.version>1.7.25</slf4j.version>
<log4j2.version>2.12.1</log4j2.version>
</properties>

<dependencies>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-common</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
jasonjoo2010 marked this conversation as resolved.
Show resolved Hide resolved
<version>${log4j2.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>com.github.stefanbirkner</groupId>
<artifactId>system-rules</artifactId>
<version>1.16.1</version>
<scope>test</scope>
</dependency>

</dependencies>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/*
* Copyright 1999-2018 Alibaba Group Holding Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.csp.sentinel.logging.slf4j;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please add the license header?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added


import com.alibaba.csp.sentinel.log.LogTarget;
import com.alibaba.csp.sentinel.log.Logger;
import com.alibaba.csp.sentinel.transport.log.CommandCenterLog;
import org.slf4j.LoggerFactory;

/**
* @author wavesZh
*/
@LogTarget(CommandCenterLog.LOGGER_NAME)
public class CommandCenterLogLogger implements Logger {

private final org.slf4j.Logger logger = LoggerFactory.getLogger(CommandCenterLog.LOGGER_NAME);

@Override
public void info(String format, Object... arguments) {
logger.info(format, arguments);
}

@Override
public void info(String msg, Throwable e) {
logger.info(msg, e);
}

@Override
public void warn(String format, Object... arguments) {
logger.warn(format, arguments);
}

@Override
public void warn(String msg, Throwable e) {
logger.warn(msg, e);
}

@Override
public void trace(String format, Object... arguments) {
logger.trace(format, arguments);
}

@Override
public void trace(String msg, Throwable e) {
logger.trace(msg, e);
}

@Override
public void debug(String format, Object... arguments) {
logger.debug(format, arguments);
}

@Override
public void debug(String msg, Throwable e) {
logger.debug(msg, e);
}

@Override
public void error(String format, Object... arguments) {
logger.error(format, arguments);
}

@Override
public void error(String msg, Throwable e) {
logger.error(msg, e);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/*
* Copyright 1999-2018 Alibaba Group Holding Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.csp.sentinel.logging.slf4j;

import com.alibaba.csp.sentinel.log.LogTarget;
import com.alibaba.csp.sentinel.log.Logger;
import com.alibaba.csp.sentinel.log.RecordLog;
import org.slf4j.LoggerFactory;

/**
* @author wavesZh
*/
@LogTarget(RecordLog.LOGGER_NAME)
public class RecordLogLogger implements Logger {

private final org.slf4j.Logger logger = LoggerFactory.getLogger(RecordLog.LOGGER_NAME);

@Override
public void info(String format, Object... arguments) {
logger.info(format, arguments);
}

@Override
public void info(String msg, Throwable e) {
logger.info(msg, e);
}

@Override
public void warn(String format, Object... arguments) {
logger.warn(format, arguments);
}

@Override
public void warn(String msg, Throwable e) {
logger.warn(msg, e);
}

@Override
public void trace(String format, Object... arguments) {
logger.trace(format, arguments);
}

@Override
public void trace(String msg, Throwable e) {
logger.trace(msg, e);
}

@Override
public void debug(String format, Object... arguments) {
logger.debug(format, arguments);
}

@Override
public void debug(String msg, Throwable e) {
logger.debug(msg, e);
}

@Override
public void error(String format, Object... arguments) {
logger.error(format, arguments);
}

@Override
public void error(String msg, Throwable e) {
logger.error(msg, e);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
com.alibaba.csp.sentinel.logging.slf4j.RecordLogLogger
com.alibaba.csp.sentinel.logging.slf4j.CommandCenterLogLogger
Loading