Skip to content

Commit a69a8cc

Browse files
authored
Redirect Eclipse logs during tests to SLF4j/Logback (#3604)
1 parent 2f2d4c8 commit a69a8cc

File tree

7 files changed

+379
-2
lines changed

7 files changed

+379
-2
lines changed

plugins/com.google.cloud.tools.eclipse.test.dependencies/.project

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@
2525
<arguments>
2626
</arguments>
2727
</buildCommand>
28+
<buildCommand>
29+
<name>org.eclipse.pde.ds.core.builder</name>
30+
<arguments>
31+
</arguments>
32+
</buildCommand>
2833
</buildSpec>
2934
<natures>
3035
<nature>org.eclipse.m2e.core.maven2Nature</nature>

plugins/com.google.cloud.tools.eclipse.test.dependencies/META-INF/MANIFEST.MF

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ Require-Bundle: org.junit;bundle-version="[4.12.0,4.12.1)";visibility:=reexport,
2020
org.slf4j.apis.jcl;bundle-version="[1.7.10,2)",
2121
org.slf4j.bridge.jul;bundle-version="[1.7.10,2)",
2222
javax.annotation
23-
Import-Package: org.osgi.framework,
23+
Service-Component: OSGI-INF/logservice.xml
24+
Import-Package: org.eclipse.equinox.log;version="1.0",
25+
org.osgi.framework,
26+
org.osgi.service.log;version="1.4.0",
2427
org.slf4j.impl;version="[1.7.10,2)"
2528
Export-Package: org.mockito;provider=google;version="1.10.19";
2629
uses:="org.mockito.invocation,
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="com.google.cloud.tools.eclipse.logging.osgi_slf4j">
3+
<implementation class="com.google.cloud.tools.eclipse.test.dependencies.EclipseLoggingAdapter" />
4+
<service>
5+
<provide interface="org.osgi.service.log.LoggerFactory" />
6+
<provide interface="org.eclipse.equinox.log.ExtendedLogService"/>
7+
<provide interface="org.osgi.service.log.LogService"/>
8+
</service>
9+
<property name="service.ranking" type="Integer" value="10000000"/>
10+
</scr:component>

plugins/com.google.cloud.tools.eclipse.test.dependencies/build.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ output.. = target/classes/
33
# NB: only include the lib/.jars actually required as lib/ will include referenced bundles
44
# including broken hamcrest-1.1
55
bin.includes = META-INF/,\
6+
OSGI-INF/,\
67
lib/mockito-core-1.10.19.jar,\
78
lib/objenesis-2.2.jar,\
89
logback.xml,\
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*
2+
* Copyright 2020 Google LLC
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+
17+
package com.google.cloud.tools.eclipse.test.dependencies;
18+
19+
import org.eclipse.equinox.log.ExtendedLogService;
20+
import org.eclipse.equinox.log.Logger;
21+
import org.osgi.framework.Bundle;
22+
import org.osgi.service.log.LoggerFactory;
23+
24+
/**
25+
* An SLF4j facade for OSGi {@link LoggerFactory} and Eclipse {@link ExtendedLogService}. This class
26+
* is intended to be a replacement for other ExtendedLogService implementations.
27+
*/
28+
public class EclipseLoggingAdapter extends LoggerDelegate
29+
implements LoggerFactory, ExtendedLogService {
30+
31+
public EclipseLoggingAdapter() {
32+
super(org.slf4j.LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME));
33+
}
34+
35+
@Override
36+
public Logger getLogger(String name) {
37+
return new LoggerDelegate(org.slf4j.LoggerFactory.getLogger(name));
38+
}
39+
40+
@Override
41+
public Logger getLogger(Class<?> clazz) {
42+
return new LoggerDelegate(org.slf4j.LoggerFactory.getLogger(clazz));
43+
}
44+
45+
@Override
46+
public Logger getLogger(Bundle bundle, String loggerName) {
47+
return new LoggerDelegate(org.slf4j.LoggerFactory.getLogger(bundle.getSymbolicName()));
48+
}
49+
50+
@Override
51+
public <L extends org.osgi.service.log.Logger> L getLogger(String name, Class<L> loggerType) {
52+
if (loggerType == org.osgi.service.log.Logger.class) {
53+
return loggerType.cast(getLogger(name));
54+
}
55+
return null;
56+
}
57+
58+
@Override
59+
public <L extends org.osgi.service.log.Logger> L getLogger(Class<?> clazz, Class<L> loggerType) {
60+
if (loggerType == org.osgi.service.log.Logger.class) {
61+
return loggerType.cast(getLogger(clazz));
62+
}
63+
return null;
64+
}
65+
66+
@Override
67+
public <L extends org.osgi.service.log.Logger> L getLogger(
68+
Bundle bundle, String name, Class<L> loggerType) {
69+
if (loggerType == org.osgi.service.log.Logger.class) {
70+
return loggerType.cast(getLogger(bundle, name));
71+
}
72+
return null;
73+
}
74+
}

0 commit comments

Comments
 (0)