View | Details | Raw Unified | Return to bug 59777
Collapse All | Expand All

(-)build.xml (-1 / +41 lines)
Lines 135-140 Link Here
135
      <sourcePath path="${src.components}" />
135
      <sourcePath path="${src.components}" />
136
      <sourcePath path="${src.functions}" />
136
      <sourcePath path="${src.functions}" />
137
      <class location="${lib.dir}/jorphan.jar" />
137
      <class location="${lib.dir}/jorphan.jar" />
138
      <class location="${lib.dir}/ApacheJMeter_slf4j_logkit.jar"/>
138
      <class location="${dest.jar}/ApacheJMeter_components.jar"/>
139
      <class location="${dest.jar}/ApacheJMeter_components.jar"/>
139
      <class location="${dest.jar}/ApacheJMeter_components.jar"/>
140
      <class location="${dest.jar}/ApacheJMeter_components.jar"/>
140
      <class location="${dest.jar}/ApacheJMeter_core.jar"/>
141
      <class location="${dest.jar}/ApacheJMeter_core.jar"/>
Lines 152-157 Link Here
152
      <class location="${dest.jar}/ApacheJMeter_mongodb.jar"/>
153
      <class location="${dest.jar}/ApacheJMeter_mongodb.jar"/>
153
      <class location="${dest.jar}/ApacheJMeter_tcp.jar"/>
154
      <class location="${dest.jar}/ApacheJMeter_tcp.jar"/>
154
      <class location="${dest.jar.jmeter}/ApacheJMeter.jar" />
155
      <class location="${dest.jar.jmeter}/ApacheJMeter.jar" />
156
      <sourcePath path="${src.slf4j_logkit}" />
155
      <sourcePath path="${src.jorphan}" />
157
      <sourcePath path="${src.jorphan}" />
156
      <sourcePath path="${src.tcp}" />
158
      <sourcePath path="${src.tcp}" />
157
      <sourcePath path="${src.jms}" />
159
      <sourcePath path="${src.jms}" />
Lines 220-225 Link Here
220
  <property name="src.jms" value="src/protocol/jms"/>
222
  <property name="src.jms" value="src/protocol/jms"/>
221
  <property name="src.native" value="src/protocol/native"/>
223
  <property name="src.native" value="src/protocol/native"/>
222
  <property name="src.mongodb" value="src/protocol/mongodb"/>
224
  <property name="src.mongodb" value="src/protocol/mongodb"/>
225
  <property name="src.slf4j_logkit" value="src/slf4j-logkit"/>
223
226
224
  <!-- Where the documentation sources live -->
227
  <!-- Where the documentation sources live -->
225
  <property name="src.docs" value="xdocs"/>
228
  <property name="src.docs" value="xdocs"/>
Lines 247-252 Link Here
247
    <pathelement location="${src.jms}"/>
250
    <pathelement location="${src.jms}"/>
248
    <pathelement location="${src.native}"/>
251
    <pathelement location="${src.native}"/>
249
    <pathelement location="${src.mongodb}"/>
252
    <pathelement location="${src.mongodb}"/>
253
    <pathelement location="${src.slf4j_logkit}"/>
250
  </path>
254
  </path>
251
255
252
  <!-- Temporary build directories: where the .class live -->
256
  <!-- Temporary build directories: where the .class live -->
Lines 269-274 Link Here
269
  <property name="build.jms" value="build/protocol/jms"/>
273
  <property name="build.jms" value="build/protocol/jms"/>
270
  <property name="build.native" value="build/protocol/native"/>
274
  <property name="build.native" value="build/protocol/native"/>
271
  <property name="build.mongodb" value="build/protocol/mongodb"/>
275
  <property name="build.mongodb" value="build/protocol/mongodb"/>
276
  <property name="build.slf4j_logkit" value="build/slf4j-logkit"/>
272
  <property name="build.test" value="build/test"/>
277
  <property name="build.test" value="build/test"/>
273
  <property name="build.res" value="build/res"/>
278
  <property name="build.res" value="build/res"/>
274
  <property name="build.test-res" value="test/resources"/>
279
  <property name="build.test-res" value="test/resources"/>
Lines 499-510 Link Here
499
    <pathelement location="${lib.dir}/${xstream.jar}"/>
504
    <pathelement location="${lib.dir}/${xstream.jar}"/>
500
    <!-- Generated jars -->
505
    <!-- Generated jars -->
501
    <fileset dir="${lib.dir}" includes="jorphan.jar"/>
506
    <fileset dir="${lib.dir}" includes="jorphan.jar"/>
507
  	<fileset dir="${lib.dir}" includes="ApacheJMeter_slf4j_logkit.jar"/>
502
    <!-- API-only jars-->
508
    <!-- API-only jars-->
503
    <fileset dir="${lib.api}" includes="*.jar"/>
509
    <fileset dir="${lib.api}" includes="*.jar"/>
504
    <!-- Optional jars -->
510
    <!-- Optional jars -->
505
    <fileset dir="${lib.opt}" includes="*.jar"/>
511
    <fileset dir="${lib.opt}" includes="*.jar"/>
506
  </path>
512
  </path>
507
513
514
	
515
  <path id="slf4j_logkit_classpath">
516
    <!-- Externally produced jars -->
517
    <pathelement location="${lib.dir}/${logkit.jar}"/>
518
    <pathelement location="${lib.dir}/${slf4j-api.jar}"/>
519
  </path>
520
	
508
  <!-- Anakia classpath -->
521
  <!-- Anakia classpath -->
509
  <path id="anakia.classpath">
522
  <path id="anakia.classpath">
510
    <pathelement location="${lib.doc}/${velocity.jar}"/>
523
    <pathelement location="${lib.doc}/${velocity.jar}"/>
Lines 816-821 Link Here
816
      </classpath>
829
      </classpath>
817
    </javac>
830
    </javac>
818
  </target>
831
  </target>
832
	
833
  <target name="compile-slf4j_logkit" description="Compile JMeter slf4j LogKit bootstrap classes.">
834
    <mkdir dir="${build.slf4j_logkit}"/>
835
    <javac srcdir="${src.slf4j_logkit}" destdir="${build.slf4j_logkit}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
836
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
837
      <include name="**/*.java"/>
838
      <classpath>
839
	    <path refid="slf4j_logkit_classpath"/>
840
	  </classpath>
841
    </javac>
842
  </target>
819
843
820
  <target name="compile-jms" depends="compile-jorphan,compile-core,compile-components"
844
  <target name="compile-jms" depends="compile-jorphan,compile-core,compile-components"
821
        description="Compile components specific to JMS sampling.">
845
        description="Compile components specific to JMS sampling.">
Lines 860-866 Link Here
860
  </target>
884
  </target>
861
885
862
  <target name="compile"
886
  <target name="compile"
863
  depends="_message_3rdParty,compile-core,compile-components,compile-functions,compile-protocols,compile-monitor,compile-junit,compile-jms,compile-native, compile-mongodb"
887
  depends="_message_3rdParty,compile-slf4j_logkit,compile-core,compile-components,compile-functions,compile-protocols,compile-monitor,compile-junit,compile-jms,compile-native, compile-mongodb"
864
  description="Compile everything."/>
888
  description="Compile everything."/>
865
889
866
  <target name="run_gui" depends="package" description="Run the JMeter GUI off the jar files">
890
  <target name="run_gui" depends="package" description="Run the JMeter GUI off the jar files">
Lines 1147-1152 Link Here
1147
      <fileset dir="${src.mongodb}" includes="**/*.properties" />
1171
      <fileset dir="${src.mongodb}" includes="**/*.properties" />
1148
    </jar>
1172
    </jar>
1149
1173
1174
    <!-- slf4j-logkit -->
1175
    <!-- Ensure that build dir exists, even if slf4j-logkit has not been built -->
1176
    <mkdir dir="${build.slf4j_logkit}"/>
1177
    <jar jarfile="${lib.dir}/ApacheJMeter_slf4j_logkit.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
1178
      <zipfileset file="${resources.meta-inf}/default.notice"
1179
        fullpath="META-INF/NOTICE" />
1180
      <zipfileset file="${resources.meta-inf}/default.license"
1181
        fullpath="META-INF/LICENSE" />
1182
      <fileset dir="${build.slf4j_logkit}" includes="**/*.class" />
1183
      <fileset dir="${src.slf4j_logkit}" includes="**/*.properties" />
1184
    </jar>
1185
1150
    <jar jarfile="${lib.dir}/jorphan.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
1186
    <jar jarfile="${lib.dir}/jorphan.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
1151
      <zipfileset file="${resources.meta-inf}/default.notice"
1187
      <zipfileset file="${resources.meta-inf}/default.notice"
1152
          fullpath="META-INF/NOTICE" />
1188
          fullpath="META-INF/NOTICE" />
Lines 1298-1303 Link Here
1298
    <include name="${dest.jar}/"/>
1334
    <include name="${dest.jar}/"/>
1299
    <include name="${lib.dir}/bshclient.jar"/>
1335
    <include name="${lib.dir}/bshclient.jar"/>
1300
    <include name="${lib.dir}/jorphan.jar"/>
1336
    <include name="${lib.dir}/jorphan.jar"/>
1337
  	<include name="${lib.dir}/ApacheJMeter_slf4j_logkit.jar"/>
1301
    <include name="${lib.dir}/junit/test.jar"/>
1338
    <include name="${lib.dir}/junit/test.jar"/>
1302
    <include name="${dest.jar.jmeter}/ApacheJMeter.jar"/>
1339
    <include name="${dest.jar.jmeter}/ApacheJMeter.jar"/>
1303
    <!-- Help documentation, binary files -->
1340
    <!-- Help documentation, binary files -->
Lines 1605-1610 Link Here
1605
      <fileset dir="${dest.jar}" includes="ApacheJMeter*.jar"/>
1642
      <fileset dir="${dest.jar}" includes="ApacheJMeter*.jar"/>
1606
      <fileset dir="${dest.jar.jmeter}" includes="ApacheJMeter.jar"/>
1643
      <fileset dir="${dest.jar.jmeter}" includes="ApacheJMeter.jar"/>
1607
      <fileset dir="${lib.dir}" includes="jorphan.jar"/>
1644
      <fileset dir="${lib.dir}" includes="jorphan.jar"/>
1645
      <fileset dir="${lib.dir}" includes="ApacheJMeter_slf4j_logkit.jar"/>
1608
    </copy>
1646
    </copy>
1609
    <copy tofile="${maven.dir}/ApacheJMeter_junit-test.jar" file="${lib.dir}/junit/test.jar"/>
1647
    <copy tofile="${maven.dir}/ApacheJMeter_junit-test.jar" file="${lib.dir}/junit/test.jar"/>
1610
    <!--
1648
    <!--
Lines 1983-1988 Link Here
1983
2021
1984
    <deployfile stem="ApacheJMeter_parent" packaging="pom"/>
2022
    <deployfile stem="ApacheJMeter_parent" packaging="pom"/>
1985
    <deployfile stem="jorphan"/>
2023
    <deployfile stem="jorphan"/>
2024
    <deployfile stem="ApacheJMeter_slf4j_logkit"/>
1986
    <deployfile stem="ApacheJMeter"/>
2025
    <deployfile stem="ApacheJMeter"/>
1987
    <deployfile stem="ApacheJMeter_components"/>
2026
    <deployfile stem="ApacheJMeter_components"/>
1988
    <deployfile stem="ApacheJMeter_config"/>
2027
    <deployfile stem="ApacheJMeter_config"/>
Lines 2221-2226 Link Here
2221
    <delete quiet="false" failonerror="false">
2260
    <delete quiet="false" failonerror="false">
2222
      <fileset dir="${dest.jar.jmeter}" includes="ApacheJMeter.jar"/>
2261
      <fileset dir="${dest.jar.jmeter}" includes="ApacheJMeter.jar"/>
2223
      <fileset dir="${lib.dir}" includes="jorphan.jar"/>
2262
      <fileset dir="${lib.dir}" includes="jorphan.jar"/>
2263
      <fileset dir="${lib.dir}" includes="ApacheJMeter_slf4j_logkit.jar"/>
2224
      <fileset dir="${lib.dir}" includes="bshclient.jar"/>
2264
      <fileset dir="${lib.dir}" includes="bshclient.jar"/>
2225
      <fileset dir="${dest.jar}" includes="*.jar"/>
2265
      <fileset dir="${dest.jar}" includes="*.jar"/>
2226
      <fileset dir="${build.dir}"/>
2266
      <fileset dir="${build.dir}"/>
(-)eclipse.classpath (+1 lines)
Lines 42-47 Link Here
42
	<classpathentry kind="src" output="build/protocol/mongodb" path="src/protocol/mongodb"/>
42
	<classpathentry kind="src" output="build/protocol/mongodb" path="src/protocol/mongodb"/>
43
	<classpathentry kind="src" output="build/protocol/native" path="src/protocol/native"/>
43
	<classpathentry kind="src" output="build/protocol/native" path="src/protocol/native"/>
44
	<classpathentry kind="src" output="build/protocol/tcp" path="src/protocol/tcp"/>
44
	<classpathentry kind="src" output="build/protocol/tcp" path="src/protocol/tcp"/>
45
	<classpathentry kind="src" output="build/slf4j-logkit" path="src/slf4j-logkit"/>
45
	<classpathentry kind="src" output="build/test" path="test/src"/>
46
	<classpathentry kind="src" output="build/test" path="test/src"/>
46
	<classpathentry kind="lib" path="lib/accessors-smart-1.1.jar"/>
47
	<classpathentry kind="lib" path="lib/accessors-smart-1.1.jar"/>
47
	<classpathentry kind="lib" path="lib/asm-5.1.jar"/>
48
	<classpathentry kind="lib" path="lib/asm-5.1.jar"/>
(-)res/maven/ApacheJMeter_slf4j_logkit.pom (+70 lines)
Line 0 Link Here
1
<!--
2
Licensed to the Apache Software Foundation (ASF) under one
3
or more contributor license agreements.  See the NOTICE file
4
distributed with this work for additional information
5
regarding copyright ownership.  The ASF licenses this file
6
to you under the Apache License, Version 2.0 (the
7
"License"); you may not use this file except in compliance
8
with the License.  You may obtain a copy of the License at
9
10
  http://www.apache.org/licenses/LICENSE-2.0
11
12
Unless required by applicable law or agreed to in writing,
13
software distributed under the License is distributed on an
14
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
KIND, either express or implied.  See the License for the
16
specific language governing permissions and limitations
17
under the License.
18
-->
19
20
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
21
    <modelVersion>4.0.0</modelVersion>
22
    <groupId>org.apache.jmeter</groupId>
23
    <artifactId>ApacheJMeter_slf4j_logkit</artifactId>
24
    <version>@MAVEN.DEPLOY.VERSION@</version>
25
    <name>Apache JMeter SLF4J Logkit</name>
26
    <!-- Parent poms have to be packaged as pom, not jar -->
27
    <packaging>pom</packaging>
28
29
    <description>Apache JMeter SLF4K Logkit is open source software, it is a slf4j binding for logkit used by Apache JMeter
30
    </description>
31
    <url>http://jmeter.apache.org/</url>
32
    <inceptionYear>2016</inceptionYear>
33
    <licenses>
34
        <license>
35
            <name>Apache 2</name>
36
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
37
            <distribution>repo</distribution>
38
            <comments>A business-friendly OSS license</comments>
39
        </license>
40
    </licenses>
41
    <issueManagement>
42
        <system>bugzilla</system>
43
        <url>https://bz.apache.org/bugzilla/describecomponents.cgi?product=JMeter</url>
44
    </issueManagement>
45
    <scm>
46
        <connection>http://svn.apache.org/repos/asf/jmeter/trunk/</connection>
47
        <developerConnection>https://svn.apache.org/repos/asf/jmeter/trunk/</developerConnection>
48
        <url>http://svn.apache.org/viewvc/jmeter/trunk/</url>
49
    </scm>
50
51
52
    <properties>
53
      <!-- these must agree with the definitions in build.properties -->
54
      <logkit.version>2.0</logkit.version>
55
      <slf4j-api.version>1.7.13</slf4j-api.version>
56
    </properties>
57
58
    <dependencies>
59
      <dependency>
60
        <groupId>logkit</groupId>
61
        <artifactId>logkit</artifactId>
62
        <version>${logkit.version}</version>
63
      </dependency>
64
      <dependency>
65
        <groupId>org.slf4j</groupId>
66
        <artifactId>slf4j-api</artifactId>
67
        <version>${slf4j-api.version}</version>
68
      </dependency>
69
    </dependencies>
70
</project>
(-)src/core/org/apache/jmeter/logging/LogkitLoggerAdapter.java (-341 lines)
Lines 1-341 Link Here
1
/*
2
 * Licensed to the Apache Software Foundation (ASF) under one or more
3
 * contributor license agreements.  See the NOTICE file distributed with
4
 * this work for additional information regarding copyright ownership.
5
 * The ASF licenses this file to You under the Apache License, Version 2.0
6
 * (the "License"); you may not use this file except in compliance with
7
 * the License.  You may obtain a copy of the License at
8
 *
9
 *   http://www.apache.org/licenses/LICENSE-2.0
10
 *
11
 * Unless required by applicable law or agreed to in writing, software
12
 * distributed under the License is distributed on an "AS IS" BASIS,
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
 * See the License for the specific language governing permissions and
15
 * limitations under the License.
16
 *
17
 */
18
19
package org.apache.jmeter.logging;
20
21
import java.io.Serializable;
22
23
import org.apache.log.Logger;
24
import org.apache.log.Priority;
25
import org.slf4j.helpers.FormattingTuple;
26
import org.slf4j.helpers.MarkerIgnoringBase;
27
import org.slf4j.helpers.MessageFormatter;
28
29
/**
30
 * Logkit adapter for slf4j 
31
 * @since 3.0
32
 */
33
public class LogkitLoggerAdapter extends MarkerIgnoringBase implements Serializable {
34
35
    final transient Logger logger;
36
37
    private static final long serialVersionUID = -122848886791823355L;
38
39
    /**
40
     * @deprecated Only for use by JUnit
41
     */
42
    @Deprecated // only for Unit test usage
43
    public LogkitLoggerAdapter() {
44
        super();
45
        this.logger = null;
46
    }
47
    
48
    LogkitLoggerAdapter(org.apache.log.Logger logkitLogger) {
49
        this.logger = logkitLogger;
50
    }
51
52
    /* (non-Javadoc)
53
     * @see org.slf4j.Logger#debug(java.lang.String)
54
     */
55
    @Override
56
    public void debug(String msg) {
57
        logger.debug(msg);
58
    }
59
60
    /* (non-Javadoc)
61
     * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object)
62
     */
63
    @Override
64
    public void debug(String format, Object arg) {
65
        if (logger.isDebugEnabled()) {
66
            FormattingTuple ft = MessageFormatter.format(format, arg);
67
            logger.log(Priority.DEBUG, ft.getMessage(), ft.getThrowable());
68
        }
69
    }
70
71
    /* (non-Javadoc)
72
     * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object[])
73
     */
74
    @Override
75
    public void debug(String format, Object... args) {
76
        if (logger.isDebugEnabled()) {
77
            FormattingTuple ft = MessageFormatter.format(format, args);
78
            logger.log(Priority.DEBUG, ft.getMessage(), ft.getThrowable());
79
        }
80
    }
81
82
    /* (non-Javadoc)
83
     * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Throwable)
84
     */
85
    @Override
86
    public void debug(String msg, Throwable throwable) {
87
        if (logger.isDebugEnabled()) {
88
            logger.log(Priority.DEBUG, msg, throwable);
89
        }
90
    }
91
92
    /* (non-Javadoc)
93
     * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object, java.lang.Object)
94
     */
95
    @Override
96
    public void debug(String format, Object arg1, Object arg2) {
97
        if (logger.isDebugEnabled()) {
98
            FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
99
            logger.log(Priority.DEBUG, ft.getMessage(), ft.getThrowable());
100
        }
101
    }
102
103
    /* (non-Javadoc)
104
     * @see org.slf4j.Logger#error(java.lang.String)
105
     */
106
    @Override
107
    public void error(String message) {
108
        if (logger.isErrorEnabled()) {
109
            logger.log(Priority.ERROR, message);
110
        }
111
    }
112
113
    /* (non-Javadoc)
114
     * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object)
115
     */
116
    @Override
117
    public void error(String format, Object arg) {
118
        if (logger.isErrorEnabled()) {
119
            FormattingTuple ft = MessageFormatter.format(format, arg);
120
            logger.log(Priority.ERROR, ft.getMessage(), ft.getThrowable());
121
        }
122
    }
123
124
    /* (non-Javadoc)
125
     * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object[])
126
     */
127
    @Override
128
    public void error(String format, Object... args) {
129
        if (logger.isErrorEnabled()) {
130
            FormattingTuple ft = MessageFormatter.format(format, args);
131
            logger.log(Priority.ERROR, ft.getMessage(), ft.getThrowable());
132
        }
133
    }
134
135
    /* (non-Javadoc)
136
     * @see org.slf4j.Logger#error(java.lang.String, java.lang.Throwable)
137
     */
138
    @Override
139
    public void error(String message, Throwable throwable) {
140
        if (logger.isErrorEnabled()) {
141
            logger.log(Priority.ERROR, message, throwable);
142
        }
143
    }
144
145
    /* (non-Javadoc)
146
     * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object, java.lang.Object)
147
     */
148
    @Override
149
    public void error(String format, Object arg1, Object arg2) {
150
        if (logger.isErrorEnabled()) {
151
            FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
152
            logger.log(Priority.ERROR, ft.getMessage(), ft.getThrowable());
153
        }
154
    }
155
156
    /* (non-Javadoc)
157
     * @see org.slf4j.Logger#info(java.lang.String)
158
     */
159
    @Override
160
    public void info(String message) {
161
        if (logger.isInfoEnabled()) {
162
            logger.log(Priority.INFO, message);
163
        }
164
    }
165
166
    /* (non-Javadoc)
167
     * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object)
168
     */
169
    @Override
170
    public void info(String format, Object arg1) {
171
        if (logger.isInfoEnabled()) {
172
            FormattingTuple ft = MessageFormatter.format(format, arg1);
173
            logger.log(Priority.INFO, ft.getMessage(), ft.getThrowable());
174
        }
175
    }
176
177
    /* (non-Javadoc)
178
     * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object[])
179
     */
180
    @Override
181
    public void info(String format, Object... args) {
182
        if (logger.isInfoEnabled()) {
183
            FormattingTuple ft = MessageFormatter.format(format, args);
184
            logger.log(Priority.INFO, ft.getMessage(), ft.getThrowable());
185
        }
186
    }
187
188
    /* (non-Javadoc)
189
     * @see org.slf4j.Logger#info(java.lang.String, java.lang.Throwable)
190
     */
191
    @Override
192
    public void info(String message, Throwable throwable) {
193
        if (logger.isInfoEnabled()) {
194
            logger.log(Priority.INFO, message, throwable);
195
        }
196
    }
197
198
    /* (non-Javadoc)
199
     * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object, java.lang.Object)
200
     */
201
    @Override
202
    public void info(String format, Object arg1, Object arg2) {
203
        if (logger.isInfoEnabled()) {
204
            FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
205
            logger.log(Priority.INFO, ft.getMessage(), ft.getThrowable());
206
        }
207
    }
208
209
    /* (non-Javadoc)
210
     * @see org.slf4j.Logger#isDebugEnabled()
211
     */
212
    @Override
213
    public boolean isDebugEnabled() {
214
        return logger.isDebugEnabled();
215
    }
216
217
    /* (non-Javadoc)
218
     * @see org.slf4j.Logger#isErrorEnabled()
219
     */
220
    @Override
221
    public boolean isErrorEnabled() {
222
        return logger.isErrorEnabled();
223
    }
224
225
    /* (non-Javadoc)
226
     * @see org.slf4j.Logger#isInfoEnabled()
227
     */
228
    @Override
229
    public boolean isInfoEnabled() {
230
        return logger.isInfoEnabled();
231
    }
232
233
    /* (non-Javadoc)
234
     * @see org.slf4j.Logger#isTraceEnabled()
235
     */
236
    @Override
237
    public boolean isTraceEnabled() {
238
        return logger.isDebugEnabled();
239
    }
240
241
    /* (non-Javadoc)
242
     * @see org.slf4j.Logger#isWarnEnabled()
243
     */
244
    @Override
245
    public boolean isWarnEnabled() {
246
        return logger.isWarnEnabled();
247
    }
248
249
    /* (non-Javadoc)
250
     * @see org.slf4j.Logger#warn(java.lang.String)
251
     */
252
    @Override
253
    public void warn(String message) {
254
        if (logger.isWarnEnabled()) {
255
            logger.log(Priority.WARN, message);
256
        }
257
    }
258
259
    /* (non-Javadoc)
260
     * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object)
261
     */
262
    @Override
263
    public void warn(String format, Object arg) {
264
        if (logger.isWarnEnabled()) {
265
            FormattingTuple ft = MessageFormatter.format(format, arg);
266
            logger.log(Priority.WARN, ft.getMessage(), ft.getThrowable());
267
        }
268
    }
269
270
    /* (non-Javadoc)
271
     * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object[])
272
     */
273
    @Override
274
    public void warn(String format, Object... args) {
275
        if (logger.isWarnEnabled()) {
276
            FormattingTuple ft = MessageFormatter.format(format, args);
277
            logger.log(Priority.WARN, ft.getMessage(), ft.getThrowable());
278
        }
279
    }
280
281
    /* (non-Javadoc)
282
     * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Throwable)
283
     */
284
    @Override
285
    public void warn(String message, Throwable throwable) {
286
        if (logger.isWarnEnabled()) {
287
            logger.log(Priority.WARN, message, throwable);
288
        }
289
    }
290
291
    /* (non-Javadoc)
292
     * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object, java.lang.Object)
293
     */
294
    @Override
295
    public void warn(String format, Object arg1, Object arg2) {
296
        if (logger.isWarnEnabled()) {
297
            FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
298
            logger.log(Priority.WARN, ft.getMessage(), ft.getThrowable());
299
        }
300
    }
301
302
    /* (non-Javadoc)
303
     * @see org.slf4j.Logger#trace(java.lang.String)
304
     */
305
    @Override
306
    public void trace(String message) {
307
        debug(message);
308
    }
309
310
    /* (non-Javadoc)
311
     * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object)
312
     */
313
    @Override
314
    public void trace(String format, Object arg) {
315
        debug(format, arg);
316
    }
317
318
    /* (non-Javadoc)
319
     * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object[])
320
     */
321
    @Override
322
    public void trace(String format, Object... args) {
323
        debug(format, args);
324
    }
325
326
    /* (non-Javadoc)
327
     * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Throwable)
328
     */
329
    @Override
330
    public void trace(String message, Throwable throwable) {
331
        debug(message, throwable);
332
    }
333
334
    /* (non-Javadoc)
335
     * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object, java.lang.Object)
336
     */
337
    @Override
338
    public void trace(String format, Object arg1, Object arg2) {
339
        debug(format, arg1, arg2);
340
    }
341
}
(-)src/core/org/apache/jmeter/logging/LogkitLoggerFactory.java (-70 lines)
Lines 1-70 Link Here
1
/*
2
 * Licensed to the Apache Software Foundation (ASF) under one or more
3
 * contributor license agreements.  See the NOTICE file distributed with
4
 * this work for additional information regarding copyright ownership.
5
 * The ASF licenses this file to You under the Apache License, Version 2.0
6
 * (the "License"); you may not use this file except in compliance with
7
 * the License.  You may obtain a copy of the License at
8
 *
9
 *   http://www.apache.org/licenses/LICENSE-2.0
10
 *
11
 * Unless required by applicable law or agreed to in writing, software
12
 * distributed under the License is distributed on an "AS IS" BASIS,
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
 * See the License for the specific language governing permissions and
15
 * limitations under the License.
16
 *
17
 */
18
19
package org.apache.jmeter.logging;
20
21
import java.util.HashMap;
22
import java.util.Map;
23
24
import org.apache.jorphan.logging.LoggingManager;
25
import org.apache.log.Hierarchy;
26
import org.slf4j.ILoggerFactory;
27
import org.slf4j.Logger;
28
29
/**
30
 * Implementation of {@link ILoggerFactory} for Logkit
31
 * @since 3.0
32
 */
33
public class LogkitLoggerFactory implements ILoggerFactory {
34
    // key: name (String), value: a Log4jLogger;
35
    private final Map<String, Logger> loggerMap;
36
37
    /**
38
     * 
39
     */
40
    public LogkitLoggerFactory() {
41
        loggerMap = new HashMap<>();
42
    }
43
44
    /**
45
     * 
46
     * @see org.slf4j.ILoggerFactory#getLogger(java.lang.String)
47
     */
48
    @Override
49
    public Logger getLogger(String name) {
50
        Logger slf4jLogger = null;
51
        if(name == null) {
52
            name = Logger.ROOT_LOGGER_NAME;
53
        }
54
        // protect against concurrent access of loggerMap
55
        synchronized (this) {
56
            slf4jLogger = loggerMap.get(name);
57
            if (slf4jLogger == null) {
58
                org.apache.log.Logger logkitLogger;
59
                if (name.equalsIgnoreCase(Logger.ROOT_LOGGER_NAME)) {
60
                    logkitLogger = Hierarchy.getDefaultHierarchy().getRootLogger();
61
                } else {
62
                    logkitLogger = LoggingManager.getLoggerFor(name);
63
                }
64
                slf4jLogger = new LogkitLoggerAdapter(logkitLogger);
65
                loggerMap.put(name, slf4jLogger);
66
            }
67
        }
68
        return slf4jLogger;
69
    }
70
}
(-)src/core/org/slf4j/impl/StaticLoggerBinder.java (-78 lines)
Lines 1-78 Link Here
1
/*
2
 * Licensed to the Apache Software Foundation (ASF) under one or more
3
 * contributor license agreements.  See the NOTICE file distributed with
4
 * this work for additional information regarding copyright ownership.
5
 * The ASF licenses this file to You under the Apache License, Version 2.0
6
 * (the "License"); you may not use this file except in compliance with
7
 * the License.  You may obtain a copy of the License at
8
 *
9
 *   http://www.apache.org/licenses/LICENSE-2.0
10
 *
11
 * Unless required by applicable law or agreed to in writing, software
12
 * distributed under the License is distributed on an "AS IS" BASIS,
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
 * See the License for the specific language governing permissions and
15
 * limitations under the License.
16
 *
17
 */
18
19
package org.slf4j.impl;
20
21
import org.apache.jmeter.logging.LogkitLoggerFactory;
22
import org.slf4j.ILoggerFactory;
23
import org.slf4j.LoggerFactory;
24
import org.slf4j.spi.LoggerFactoryBinder;
25
26
/**
27
 * The binding of {@link LoggerFactory} class with an actual instance of
28
 * {@link ILoggerFactory} is performed using information returned by this class.
29
 * 
30
 * @since 3.0
31
 */
32
public class StaticLoggerBinder implements LoggerFactoryBinder {
33
34
    /**
35
     * The unique instance of this class.
36
     * 
37
     */
38
    private static final StaticLoggerBinder SINGLETON = new StaticLoggerBinder();
39
40
    /**
41
     * Return the singleton of this class.
42
     * 
43
     * @return the StaticLoggerBinder singleton
44
     */
45
    public static final StaticLoggerBinder getSingleton() {
46
        return SINGLETON;
47
    }
48
49
    /**
50
     * Declare the version of the SLF4J API this implementation is compiled
51
     * against. The value of this field is usually modified with each release.
52
     */
53
    // to avoid constant folding by the compiler, this field must *not* be final
54
    public static String REQUESTED_API_VERSION = "1.7"; // !final
55
56
    private static final String loggerFactoryClassStr = LogkitLoggerFactory.class
57
            .getName();
58
59
    /**
60
     * The ILoggerFactory instance returned by the {@link #getLoggerFactory}
61
     * method should always be the same object
62
     */
63
    private final ILoggerFactory loggerFactory;
64
65
    private StaticLoggerBinder() {
66
        loggerFactory = new LogkitLoggerFactory();
67
    }
68
69
    @Override
70
    public ILoggerFactory getLoggerFactory() {
71
        return loggerFactory;
72
    }
73
74
    @Override
75
    public String getLoggerFactoryClassStr() {
76
        return loggerFactoryClassStr;
77
    }
78
}
(-)src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerAdapter.java (+327 lines)
Line 0 Link Here
1
/*
2
 * Licensed to the Apache Software Foundation (ASF) under one or more
3
 * contributor license agreements.  See the NOTICE file distributed with
4
 * this work for additional information regarding copyright ownership.
5
 * The ASF licenses this file to You under the Apache License, Version 2.0
6
 * (the "License"); you may not use this file except in compliance with
7
 * the License.  You may obtain a copy of the License at
8
 *
9
 *   http://www.apache.org/licenses/LICENSE-2.0
10
 *
11
 * Unless required by applicable law or agreed to in writing, software
12
 * distributed under the License is distributed on an "AS IS" BASIS,
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
 * See the License for the specific language governing permissions and
15
 * limitations under the License.
16
 *
17
 */
18
19
package org.apache.jmeter.logging;
20
21
import java.io.Serializable;
22
23
import org.apache.log.Logger;
24
import org.apache.log.Priority;
25
import org.slf4j.helpers.FormattingTuple;
26
import org.slf4j.helpers.MarkerIgnoringBase;
27
import org.slf4j.helpers.MessageFormatter;
28
29
/**
30
 * Logkit adapter for slf4j 
31
 * @since 3.0
32
 */
33
public class LogkitLoggerAdapter extends MarkerIgnoringBase implements Serializable {
34
35
    final transient Logger logger;
36
37
    private static final long serialVersionUID = -122848886791823355L;
38
39
    /**
40
     * @deprecated Only for use by JUnit
41
     */
42
    @Deprecated // only for Unit test usage
43
    public LogkitLoggerAdapter() {
44
        super();
45
        this.logger = null;
46
    }
47
    
48
    LogkitLoggerAdapter(org.apache.log.Logger logkitLogger) {
49
        this.logger = logkitLogger;
50
    }
51
52
    /* (non-Javadoc)
53
     * @see org.slf4j.Logger#debug(java.lang.String)
54
     */
55
    @Override
56
    public void debug(String msg) {
57
        logger.debug(msg);
58
    }
59
60
    /* (non-Javadoc)
61
     * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object)
62
     */
63
    @Override
64
    public void debug(String format, Object arg) {
65
        if (logger.isDebugEnabled()) {
66
            FormattingTuple ft = MessageFormatter.format(format, arg);
67
            logger.log(Priority.DEBUG, ft.getMessage(), ft.getThrowable());
68
        }
69
    }
70
71
    /* (non-Javadoc)
72
     * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object[])
73
     */
74
    @Override
75
    public void debug(String format, Object... args) {
76
        if (logger.isDebugEnabled()) {
77
            FormattingTuple ft = MessageFormatter.format(format, args);
78
            logger.log(Priority.DEBUG, ft.getMessage(), ft.getThrowable());
79
        }
80
    }
81
82
    /* (non-Javadoc)
83
     * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Throwable)
84
     */
85
    @Override
86
    public void debug(String msg, Throwable throwable) {
87
        logger.log(Priority.DEBUG, msg, throwable);
88
    }
89
90
    /* (non-Javadoc)
91
     * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object, java.lang.Object)
92
     */
93
    @Override
94
    public void debug(String format, Object arg1, Object arg2) {
95
        FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
96
        logger.log(Priority.DEBUG, ft.getMessage(), ft.getThrowable());
97
    }
98
99
    /* (non-Javadoc)
100
     * @see org.slf4j.Logger#error(java.lang.String)
101
     */
102
    @Override
103
    public void error(String message) {
104
        logger.log(Priority.ERROR, message);
105
    }
106
107
    /* (non-Javadoc)
108
     * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object)
109
     */
110
    @Override
111
    public void error(String format, Object arg) {
112
        if (logger.isErrorEnabled()) {
113
            FormattingTuple ft = MessageFormatter.format(format, arg);
114
            logger.log(Priority.ERROR, ft.getMessage(), ft.getThrowable());
115
        }
116
    }
117
118
    /* (non-Javadoc)
119
     * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object[])
120
     */
121
    @Override
122
    public void error(String format, Object... args) {
123
        if (logger.isErrorEnabled()) {
124
            FormattingTuple ft = MessageFormatter.format(format, args);
125
            logger.log(Priority.ERROR, ft.getMessage(), ft.getThrowable());
126
        }
127
    }
128
129
    /* (non-Javadoc)
130
     * @see org.slf4j.Logger#error(java.lang.String, java.lang.Throwable)
131
     */
132
    @Override
133
    public void error(String message, Throwable throwable) {
134
        if (logger.isErrorEnabled()) {
135
            logger.log(Priority.ERROR, message, throwable);
136
        }
137
    }
138
139
    /* (non-Javadoc)
140
     * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object, java.lang.Object)
141
     */
142
    @Override
143
    public void error(String format, Object arg1, Object arg2) {
144
        if (logger.isErrorEnabled()) {
145
            FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
146
            logger.log(Priority.ERROR, ft.getMessage(), ft.getThrowable());
147
        }
148
    }
149
150
    /* (non-Javadoc)
151
     * @see org.slf4j.Logger#info(java.lang.String)
152
     */
153
    @Override
154
    public void info(String message) {
155
        logger.log(Priority.INFO, message);
156
    }
157
158
    /* (non-Javadoc)
159
     * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object)
160
     */
161
    @Override
162
    public void info(String format, Object arg1) {
163
        if (logger.isInfoEnabled()) {
164
            FormattingTuple ft = MessageFormatter.format(format, arg1);
165
            logger.log(Priority.INFO, ft.getMessage(), ft.getThrowable());
166
        }
167
    }
168
169
    /* (non-Javadoc)
170
     * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object[])
171
     */
172
    @Override
173
    public void info(String format, Object... args) {
174
        if (logger.isInfoEnabled()) {
175
            FormattingTuple ft = MessageFormatter.format(format, args);
176
            logger.log(Priority.INFO, ft.getMessage(), ft.getThrowable());
177
        }
178
    }
179
180
    /* (non-Javadoc)
181
     * @see org.slf4j.Logger#info(java.lang.String, java.lang.Throwable)
182
     */
183
    @Override
184
    public void info(String message, Throwable throwable) {
185
        logger.log(Priority.INFO, message, throwable);
186
    }
187
188
    /* (non-Javadoc)
189
     * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object, java.lang.Object)
190
     */
191
    @Override
192
    public void info(String format, Object arg1, Object arg2) {
193
        if (logger.isInfoEnabled()) {
194
            FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
195
            logger.log(Priority.INFO, ft.getMessage(), ft.getThrowable());
196
        }
197
    }
198
199
    /* (non-Javadoc)
200
     * @see org.slf4j.Logger#isDebugEnabled()
201
     */
202
    @Override
203
    public boolean isDebugEnabled() {
204
        return logger.isDebugEnabled();
205
    }
206
207
    /* (non-Javadoc)
208
     * @see org.slf4j.Logger#isErrorEnabled()
209
     */
210
    @Override
211
    public boolean isErrorEnabled() {
212
        return logger.isErrorEnabled();
213
    }
214
215
    /* (non-Javadoc)
216
     * @see org.slf4j.Logger#isInfoEnabled()
217
     */
218
    @Override
219
    public boolean isInfoEnabled() {
220
        return logger.isInfoEnabled();
221
    }
222
223
    /* (non-Javadoc)
224
     * @see org.slf4j.Logger#isTraceEnabled()
225
     */
226
    @Override
227
    public boolean isTraceEnabled() {
228
        return logger.isDebugEnabled();
229
    }
230
231
    /* (non-Javadoc)
232
     * @see org.slf4j.Logger#isWarnEnabled()
233
     */
234
    @Override
235
    public boolean isWarnEnabled() {
236
        return logger.isWarnEnabled();
237
    }
238
239
    /* (non-Javadoc)
240
     * @see org.slf4j.Logger#warn(java.lang.String)
241
     */
242
    @Override
243
    public void warn(String message) {
244
        logger.log(Priority.WARN, message);
245
    }
246
247
    /* (non-Javadoc)
248
     * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object)
249
     */
250
    @Override
251
    public void warn(String format, Object arg) {
252
        if (logger.isWarnEnabled()) {
253
            FormattingTuple ft = MessageFormatter.format(format, arg);
254
            logger.log(Priority.WARN, ft.getMessage(), ft.getThrowable());
255
        }
256
    }
257
258
    /* (non-Javadoc)
259
     * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object[])
260
     */
261
    @Override
262
    public void warn(String format, Object... args) {
263
        if (logger.isWarnEnabled()) {
264
            FormattingTuple ft = MessageFormatter.format(format, args);
265
            logger.log(Priority.WARN, ft.getMessage(), ft.getThrowable());
266
        }
267
    }
268
269
    /* (non-Javadoc)
270
     * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Throwable)
271
     */
272
    @Override
273
    public void warn(String message, Throwable throwable) {
274
        logger.log(Priority.WARN, message, throwable);
275
    }
276
277
    /* (non-Javadoc)
278
     * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object, java.lang.Object)
279
     */
280
    @Override
281
    public void warn(String format, Object arg1, Object arg2) {
282
        if (logger.isWarnEnabled()) {
283
            FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
284
            logger.log(Priority.WARN, ft.getMessage(), ft.getThrowable());
285
        }
286
    }
287
288
    /* (non-Javadoc)
289
     * @see org.slf4j.Logger#trace(java.lang.String)
290
     */
291
    @Override
292
    public void trace(String message) {
293
        debug(message);
294
    }
295
296
    /* (non-Javadoc)
297
     * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object)
298
     */
299
    @Override
300
    public void trace(String format, Object arg) {
301
        debug(format, arg);
302
    }
303
304
    /* (non-Javadoc)
305
     * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object[])
306
     */
307
    @Override
308
    public void trace(String format, Object... args) {
309
        debug(format, args);
310
    }
311
312
    /* (non-Javadoc)
313
     * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Throwable)
314
     */
315
    @Override
316
    public void trace(String message, Throwable throwable) {
317
        debug(message, throwable);
318
    }
319
320
    /* (non-Javadoc)
321
     * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object, java.lang.Object)
322
     */
323
    @Override
324
    public void trace(String format, Object arg1, Object arg2) {
325
        debug(format, arg1, arg2);
326
    }
327
}
(-)src/slf4j-logkit/org/apache/jmeter/logging/LogkitLoggerFactory.java (+69 lines)
Line 0 Link Here
1
/*
2
 * Licensed to the Apache Software Foundation (ASF) under one or more
3
 * contributor license agreements.  See the NOTICE file distributed with
4
 * this work for additional information regarding copyright ownership.
5
 * The ASF licenses this file to You under the Apache License, Version 2.0
6
 * (the "License"); you may not use this file except in compliance with
7
 * the License.  You may obtain a copy of the License at
8
 *
9
 *   http://www.apache.org/licenses/LICENSE-2.0
10
 *
11
 * Unless required by applicable law or agreed to in writing, software
12
 * distributed under the License is distributed on an "AS IS" BASIS,
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
 * See the License for the specific language governing permissions and
15
 * limitations under the License.
16
 *
17
 */
18
19
package org.apache.jmeter.logging;
20
21
import java.util.HashMap;
22
import java.util.Map;
23
24
import org.apache.log.Hierarchy;
25
import org.slf4j.ILoggerFactory;
26
import org.slf4j.Logger;
27
28
/**
29
 * Implementation of {@link ILoggerFactory} for Logkit
30
 * @since 3.0
31
 */
32
public class LogkitLoggerFactory implements ILoggerFactory {
33
    // key: name (String), value: a Log4jLogger;
34
    private final Map<String, Logger> loggerMap;
35
36
    /**
37
     * 
38
     */
39
    public LogkitLoggerFactory() {
40
        loggerMap = new HashMap<>();
41
    }
42
43
    /**
44
     * 
45
     * @see org.slf4j.ILoggerFactory#getLogger(java.lang.String)
46
     */
47
    @Override
48
    public Logger getLogger(String name) {
49
        Logger slf4jLogger = null;
50
        if(name == null) {
51
            name = Logger.ROOT_LOGGER_NAME;
52
        }
53
        // protect against concurrent access of loggerMap
54
        synchronized (this) {
55
            slf4jLogger = loggerMap.get(name);
56
            if (slf4jLogger == null) {
57
                org.apache.log.Logger logkitLogger;
58
                if (name.equalsIgnoreCase(Logger.ROOT_LOGGER_NAME)) {
59
                    logkitLogger = Hierarchy.getDefaultHierarchy().getRootLogger();
60
                } else {
61
                    logkitLogger = Hierarchy.getDefaultHierarchy().getLoggerFor(name);
62
                }
63
                slf4jLogger = new LogkitLoggerAdapter(logkitLogger);
64
                loggerMap.put(name, slf4jLogger);
65
            }
66
        }
67
        return slf4jLogger;
68
    }
69
}
(-)src/slf4j-logkit/org/slf4j/impl/StaticLoggerBinder.java (+78 lines)
Line 0 Link Here
1
/*
2
 * Licensed to the Apache Software Foundation (ASF) under one or more
3
 * contributor license agreements.  See the NOTICE file distributed with
4
 * this work for additional information regarding copyright ownership.
5
 * The ASF licenses this file to You under the Apache License, Version 2.0
6
 * (the "License"); you may not use this file except in compliance with
7
 * the License.  You may obtain a copy of the License at
8
 *
9
 *   http://www.apache.org/licenses/LICENSE-2.0
10
 *
11
 * Unless required by applicable law or agreed to in writing, software
12
 * distributed under the License is distributed on an "AS IS" BASIS,
13
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
 * See the License for the specific language governing permissions and
15
 * limitations under the License.
16
 *
17
 */
18
19
package org.slf4j.impl;
20
21
import org.apache.jmeter.logging.LogkitLoggerFactory;
22
import org.slf4j.ILoggerFactory;
23
import org.slf4j.LoggerFactory;
24
import org.slf4j.spi.LoggerFactoryBinder;
25
26
/**
27
 * The binding of {@link LoggerFactory} class with an actual instance of
28
 * {@link ILoggerFactory} is performed using information returned by this class.
29
 * 
30
 * @since 3.0
31
 */
32
public class StaticLoggerBinder implements LoggerFactoryBinder {
33
34
    /**
35
     * The unique instance of this class.
36
     * 
37
     */
38
    private static final StaticLoggerBinder SINGLETON = new StaticLoggerBinder();
39
40
    /**
41
     * Return the singleton of this class.
42
     * 
43
     * @return the StaticLoggerBinder singleton
44
     */
45
    public static final StaticLoggerBinder getSingleton() {
46
        return SINGLETON;
47
    }
48
49
    /**
50
     * Declare the version of the SLF4J API this implementation is compiled
51
     * against. The value of this field is usually modified with each release.
52
     */
53
    // to avoid constant folding by the compiler, this field must *not* be final
54
    public static String REQUESTED_API_VERSION = "1.7"; // !final
55
56
    private static final String loggerFactoryClassStr = LogkitLoggerFactory.class
57
            .getName();
58
59
    /**
60
     * The ILoggerFactory instance returned by the {@link #getLoggerFactory}
61
     * method should always be the same object
62
     */
63
    private final ILoggerFactory loggerFactory;
64
65
    private StaticLoggerBinder() {
66
        loggerFactory = new LogkitLoggerFactory();
67
    }
68
69
    @Override
70
    public ILoggerFactory getLoggerFactory() {
71
        return loggerFactory;
72
    }
73
74
    @Override
75
    public String getLoggerFactoryClassStr() {
76
        return loggerFactoryClassStr;
77
    }
78
}

Return to bug 59777