-
-
Notifications
You must be signed in to change notification settings - Fork 990
/
news.html
executable file
·2432 lines (1841 loc) · 88.3 KB
/
news.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>SLF4J News</title>
<link rel="stylesheet" type="text/css" media="screen" href="css/site.css" />
<link rel="stylesheet" type="text/css" href="css/prettify.css" />
</head>
<body onload="prettyPrint()">
<script type="text/javascript">prefix='';</script>
<script type="text/javascript" src="js/prettify.js"></script>
<script type="text/javascript" src="js/jquery-min.js"></script>
<div id="container">
<script src="templates/header.js" type="text/javascript"></script>
<div id="left">
<script src="templates/left.js" type="text/javascript"></script>
</div>
<div id="right">
<script src="templates/right.js" type="text/javascript"></script>
</div>
<div id="content">
<h1>SLF4J News</h1>
<p>Please note that you can receive SLF4J related announcements by
subscribing to the <a
href="http://www.qos.ch/mailman/listinfo/announce">QOS.ch
announce</a> mailing list.
</p>
<!--
Conventions:
file names in <em/>
class names in <code/>
-->
<hr noshade="noshade" size="1"/>
<h3>30th of August, 2021 - Release of SLF4J 2.0.0-alpha5</h3>
<p class="highlight">The the 2.0.x series requires Java 8 and
adds a backward-compatible <a
href="manual.html#fluent">fluent logging api</a>.
<br/> <br/>
Moreover, SLF4J has been modularized per <a
href="http://openjdk.java.net/projects/jigsaw/spec/">JPMS/Jigsaw</a>
specificaton. The resulting internal changes are <a class="big
bold" href="faq.html#changesInVersion200">detailed</a> in the FAQ
page.
</p>
<p>SLF4J version 2.0.0 requires Java 8. It builds upon the 1.8.x
series and adds a backward-compatible <a
href="manual.html#fluent">fluent logging api</a>. By
backward-compatible, we mean that existing logging frameworks do
not have to be changed for the user to benefit from the fluent
logging API. However, existing frameworks must migrate to the
<code>ServiceLoader</code> mechanism. The resulting internal
changes are <a class="big bold"
href="faq.html#changesInVersion200">detailed</a> in the FAQ page.
</p>
<p>• The
<em>META-INF/services/java.lang.System$LoggerFinder</em>
file in <em>slf4j-jdk-platform-logging</em> module now has the
correct contents. This fixes <a
href="https://jira.qos.ch/browse/SLF4J-521">SLF4J-521</a> initially
reported by Benjamin Manes with Nicolai Parlog providing the
relevant PR.</p>
<hr noshade="noshade" size="1"/>
<h3>12th of August, 2021 - Release of SLF4J 2.0.0-alpha4</h3>
<p>• Added support for the <a
href="https://openjdk.java.net/jeps/264">Java Platform Logging API
(JEP 264)</a> in the new <em>slf4j-jdk-platform-logging</em>
module. JEP 264 was added in Java 9. Many thanks to Nicolai Parlog
for providing the relevant PR.
</p>
<hr noshade="noshade" size="1"/>
<h3>10th of August, 2021 - Release of SLF4J 2.0.0-alpha3</h3>
<p>In addition to fixes imported from the 1.7 branch, such as <a
href="https://jira.qos.ch/browse/SLF4J-515">SLF4J-515</a>, this
version consists of changes visible only to frameworks implementing
the SLF4J API.
</p>
<ul>
<li>In <code>DefaultLoggingEventBuilder</code>, the
<code>innerLog(LoggingEvent)</code> method was renamed as
<code>log</code> and its visibility changed to
<code>protected</code>.
</li>
<li>In <code>DefaultLoggingEventBuilder</code>, the
<code>loggingEvent</code> and <code>logger</code> fields have
their visibility changed to <code>protected</code>.
</li>
<li>The <code>getRequesteApiVersion</code> method in
<code>SLF4JServiceProvider</code> was renamed as
getRequeste<b>d</b>ApiVersion. This fixes <a
href="https://jira.qos.ch/browse/SLF4J-516">SLF4J-516</a>.</li>
</ul>
<p>Fixed resource path to <code>NOPServiceProvider</code> in
slf4j-nop module. This fixes <a
href="https://jira.qos.ch/browse/SLF4J-518">SLF4J-518</a>.</p>
<hr noshade="noshade" size="1"/>
<h3>20th of July, 2021 - Release of SLF4J 1.7.32</h3>
<p>In the slf4j-simple module, <code>SimpleLogger</code> now caters
for concurrent access. This fixes <a
href="https://jira.qos.ch/browse/SLF4J-515">SLF4J-515</a> as
reported by Tibor Digana.
</p>
<hr noshade="noshade" size="1"/>
<h3>2nd of July, 2021 - Release of SLF4J 2.0.0-alpha2</h3>
<p>• Fixed important bug in the fluent API. The
<code>LoggingEventBuilder.addArgument(Supplier)</code> method now
takes <code>Supplier<?></code> and not
<code>Supplier<Object></code>. This problem was reported in
<a href="https://jira.qos.ch/browse/SLF4J-485">SLF4J-485</a> by
Christoffer Hammarström who also provided a relevant test case.</p>
<p>• Added support for the native OSGi service loader mechanism as
described in <a
href="https://jira.qos.ch/browse/SLF4J-457">SLF4J-457</a>. Our
gratidude goes to Björn Kautler for ptoviding the relevant PR.</p>
<p>•Fixed inccorect location information computation when fluent API
is used. This issue was reported in <a
href="https://jira.qos.ch/browse/SLF4J-511">SLF4J-511</a> by Ralph
Goers.
</p>
<p>Printing methods in the <code>LoggerWrapper</code> class part of
slf4j-ext spuriously called <code>MessageFormatter.format()</code>
method before delegating logging to the wrapped logger. However,
the wrapped logger invoked <code>MessageFormatter.format()</code> a
second time. The second call is usually innocuous unless the String
representation of any of the arguments contain the anchor
character, for example if an argument is an empty
<code>Set</code>. The spurious calls to
<code>MessageFormatter.format()</code> were removed fixing <a
href="https://jira.qos.ch/browse/SLF4J-421">SLF4J-421</a> and <a
href="https://jira.qos.ch/browse/SLF4J-287">SLF4J-287</a>.</p>
<p>• The implementations of the
<code>MDCAdapter.setContextMap()</code> methods shipping with SLF4J
now cater for a null argument. This fixes <a
href="https://jira.qos.ch/browse/SLF4J-414">SLF4J-414</a>. Both
Alexei Orischenko and Kengo TODA kindly provided PRs for this
issue.</p>
<h3>18th of June, 2021 - Release of SLF4J 1.7.31</h3>
<p>In the jcl-over-slf4j module avoid <code>Object</code> to
<code>String</code> conversion. This issue was reported in <a
href="https://jira.qos.ch/browse/SLF4J-497">SLF4J-497</a> by Antonio
Tomac who also provided the relevant PR.</p>
<p>In the log4j-over-slf4j module added empty constructors for
ConsoleAppender. This fixes <a
href="https://jira.qos.ch/browse/SLF4J-514">SLF4J-514</a> as
requested by Simon F (bratkartoffel).
<hr noshade="noshade" size="1"/>
<h3>16th of December, 2019 - Release of SLF4J 1.7.30</h3>
<p>Fixed a memory leak in case of no provided binding and
multi-threaded initialization as described in <a
href="https://jira.qos.ch/browse/SLF4J-469">SLF4J-469</a>. Many
thanks to David Harsha to providing the relevant PR.</p>
<hr noshade="noshade" size="1"/>
<h3>31st of October, 2019 - Release of SLF4J 1.7.29</h3>
<p>In the pom file for <em>jcl-over-slf4j</em> module, the Apache
license is now explicitly mentioned. In previous versions, the
Apache license for the <em>jcl-over-slf4j</em> was mentioned in
java source code and the LICENSE.txt file. </p>
<hr noshade="noshade" size="1"/>
<h3>October 1st, 2019 - Release of SLF4J 2.0.0-alpha1</h3>
<p class="highlight">The the 2.0.x series requires Java 8 and
adds a backward-compatible <a
href="manual.html#fluent">fluent logging api</a>.
<br/> <br/>
Moreover, SLF4J has been modularized per <a
href="http://openjdk.java.net/projects/jigsaw/spec/">JPMS/Jigsaw</a>
specificaton. The resulting internal changes are <a class="big
bold" href="faq.html#changesInVersion18">detailed</a> in the FAQ
page.
</p>
<p>SLF4J version 2.0.0 requires Java 8. It builds upon the 1.8.x
series and adds a backward-compatible <a
href="manual.html#fluent">fluent logging api</a>. By
backward-compatible, we mean that existing logging frameworks do
not have to be changed for the user to benefit from the fluent
logging API.
</p>
<p>• Refactored the fluent-api in
<code>org.slf4j.Logger</code> interface to ease the work required
by downstream implementations.
</p>
<p>• <em>By default</em>, when using the fluent-API
<code>org.slf4j.Logger</code> will merge into the message part any
marker and key-value data passed to it. Non default implementation
are encouraged to implement a more customizable behavior.</p>
<p>• Fix the double back-end initializatoin problem reported
in <a href="https://jira.qos.ch/browse/SLF4J-463">SLF4J-463</a> by
Dan Groves who also provided a test-case to reptoduce the problem
and a relevant fix.
</p>
<p>• Fixed incorrect handling of <code>Throwable</code> as
last parameter in <a
href="https://jira.qos.ch/browse/SLF4J-466">SLF4J-466</a>.
</p>
<hr noshade="noshade" size="1"/>
<h3>10th of August, 2019 - Release of SLF4J 1.7.28</h3>
<p>• Added <code>Automatic-Module-Name</code> in
<em>MANIFEST.MF</em> files in various SLF4J artifacts. This fixes
<a href="https://jira.qos.ch/browse/SLF4J-420">SLF4J-420</a> as
reported by Gael Lalire.</p>
<p>The module names to JMPS automatic module name mappings are
listed in the table below.</p>
<table class="bodyTable striped" >
<tr >
<th>Maven artifact/module</th>
<th>JMPS module name</th>
</tr>
<tr>
<td>slf4j-api</td>
<td>org.slf4j</td>
</tr>
<tr>
<td>slf4j-jdk14</td>
<td>org.slf4j.jul</td>
</tr>
<tr>
<td>slf4j-nop</td>
<td>org.slf4j.nop</td>
</tr>
<tr><td>slf4j-simple</td>
<td>org.slf4j.simple</td>
</tr>
<tr>
<td>jcl-over-slf4j</td>
<td>org.apache.commons.logging</td>
</tr>
<tr>
<td>log4j-over-slf4j</td>
<td>org.apache.log4j</td>
</tr>
</table>
<p>• Fixed incorrect use of <code>TRACE</code> level in one of
the <code>debug()</code> printing methods in
<code>EventRecodingLogger</code> class. This corrects <a
href="https://jira.qos.ch/browse/SLF4J-460">SLF4J-460</a> as
reporeted by Kevin Goveia.
</p>
<hr noshade="noshade" size="1"/>
<h3>6th of August, 2019 - Release of SLF4J 1.7.27</h3>
<p>This version had the incorrect "Automatic-Module-Name" for the
<code>log4j-over-slf4j</code> artifact. Please use version 1.7.28
or later which contain correct automatic module names.</p>
<hr noshade="noshade" size="1"/>
<h3>13th of June, 2019 - Release of SLF4J 2.0.0-alpha0</h3>
<p class="highlight">The the 2.0.x series requires Java 8 and
adds a backward-compatible <a
href="manual.html#fluent">fluent logging api</a>.</p>
<p>SLF4J version 2.0.0 requires Java 8. It builds on the 1.8.x
series and adds a backward-compatible <a
href="manual.html#fluent">fluent logging api</a>. By backward-compatible,
we mean that existing logging frameworks do not have to be changed
for the user to benefit from the fluent logging API.
</p>
<hr noshade="noshade" size="1"/>
<h3>2019 - Release of SLF4J 1.8.0-beta5</h3>
<p>Fixed ignored Throwable issue in log4j-over-slf4j as reported in
<a href="https://jira.qos.ch/browse/SLF4J-233">SLF4J-233</a> by
John Vasileff.</p>
<p>In all relevant <em>MANIFEST.MF</em> files set the
<code>Bundle-RequiredExecutionEnvironment</code> directive to
<code>JavaSE-1.6</code>. This fixes <a
href="https://jira.qos.ch/browse/SLF4J-449">SLF4J-449</a> as
reported by Larissa Smirnova.</p>
<p><code>JDK14LoggerAdapter</code> is now aware of being enclosed
in a <code>SubstituteLogger</code> and computes caller data
accordingly. This fixes <a
href="https://jira.qos.ch/browse/SLF4J-445">SLF4J-445</a> reported
by Alexander Yevsyukov.
</p>
<p>In the slf4j-ext package, marked the ch.qos.cal10n package as
optional. This fixes <a
href="https://jira.qos.ch/browse/SLF4J-439">SLF4J-439</a> reported
by Mike Mansell.</p>
<hr noshade="noshade" size="1"/>
<h3>February 19th, 2019 - Release of SLF4J 1.8.0-beta4</h3>
<p class="highlight">In the 1.8.x series, SLF4J has been
modularized per <a
href="http://openjdk.java.net/projects/jigsaw/spec/">JPMS/Jigsaw</a>
specification. The resulting internal changes are <a class="big
bold" href="faq.html#changesInVersion18">detailed</a> in the FAQ
page. </p>
<p class="highlight">The the 1.8.x series requires Java 6 or
later as slf4j-api now relies on the <code>ServiceLoader</code>
mechanism to find its logging backend. <code>ServiceLoader</code>
is available in <b>Java 6</b> and later.</p>
<p>In the 1.8.x series, SLF4J has been modularized
per <a href="http://openjdk.java.net/projects/jigsaw/spec/">JPMS/Jigsaw</a>
specification. The resulting internal changes are <a class="big
bold" href="faq.html#changesInVersion18">detailed</a> in the FAQ
page. Moreover, SLF4J now requires Java 6 or later as
slf4j-api now relies on
the <a href="https://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html">ServiceLoader</a>
mechanism to find its logging backend. <code>ServiceLoader</code>
is available in Java 6 and later.</p>
<p><code>SLF4JBridgeHandler</code> now correctly handles null
messages. This fixes <a
href="https://jira.qos.ch/browse/SLF4J-99">SLF4J-99</a> (again) and
<a href="https://jira.qos.ch/browse/SLF4J-409">SLF4J-409</a> as
reported by Devin Smith.</p>
<p>For reasons of coherency, the
<em>Automatic-Automatic-Module-Name</em> for the jul-to-slf4j
module is now "jul.to.slf4j". In the earlier versions of Java 9 the
string "to" within "jul.to.slf4j" was incorrectly interpreted as a
reserved keyword. This bug has been fixed in later versions of the
JDK, in particular JDK 11.
</p>
<p>SLF4J modules are now <a
href="http://openjdk.java.net/jeps/238">multi-release jar</a>
files. This fixes compatibility issues in certain legacy
environments, as described for example in <a
href="https://jira.qos.ch/browse/SLF4J-456">SLF4J-456</a>.
<p>Fixed <a
href="https://nvd.nist.gov/vuln/detail/CVE-2018-8088">CVE-2018-8088</a>
by removing the <code>EventData</code> <code>EventException</code>
<code>EventLogger</code> classes in the same way as done in SLF4J
1.7.26.
</p>
<p>Removed <code>MDCStrLookup</code> class in
<code>org.slf4j.ext</code> package which relied on
<code>commons-lang</code>. Thus, <code>slf4j-ext</code> module no
longer depends on <code>commons-lang</code> fixing <a
href="https://jira.qos.ch/browse/SLF4J-454">SLF4J-454</a>.
<h3>February 16th, 2019 - Release of SLF4J 1.7.26</h3>
<p>Due to popular demand in relation to <a
href="https://nvd.nist.gov/vuln/detail/CVE-2018-8088">CVE-2018-8088</a>,
<code>EventData</code>, <code>EventException</code> and
<code>EventLogger</code> classes were removed from the
<code>org.slf4j.ext</code> package located in the
<code>slf4j-ext</code> module.
</p>
<p>The aforementioned vulnerabilty has a low severty but was
incorrectly marked critical in the National Vulnerability Database.
</p>
<hr noshade="noshade" size="1"/>
<h3>21st of March, 2018 - Release of SLF4J 1.8.0-beta2</h3>
<p>Automatic module name for the artifact <em>jul-to-slf4j.jar</em>
is jul.to.slf4j. However, <b>to</b> is a reserved keyword within
ModuleDeclaration and ModuleDirective productions (Java 9). By
declaring the following in MANIFEST file of said artifact we avoid
this problem. </p>
<p class="source">Automatic-Module-Name: <b>jul_to_slf4j</b></p>
<p>In later versions of Java 9 this problem was fixed and we
reverted to <b>jul.to.slf4j</b> in 1.8.0-beta3 and later.</p>
<p>See also <a
href="https://jira.qos.ch/browse/SLF4J-428">SLF4J-428</a>.</p>
<p>Fix incorrect use of log levels in
<code>EventRecodingLogger</code>. This fixes <a
href="https://jira.qos.ch/browse/SLF4J-411">SLF4J-411</a> reported
by Doug Roper.</p>
<p>The class <code>org.slf4j.ext.EventData</code> is now marked as
deprecated in preparation for its removal due to a security
vulnerability. In subsequent releases this class well be removed
without replacement. See
also <a href="https://jira.qos.ch/browse/SLF4J-430">SLF4J-430</a>
and <a href="https://jira.qos.ch/browse/SLF4J-431">SLF4J-431</a>.</p>
<h3>January 30th, 2018 - Release of SLF4J 1.8.0-beta1</h3>
<p>Fix Travis build issues as reported in <a
href="https://jira.qos.ch/browse/SLF4J-427">SLF4J-427</a> by
Brett Randall who also provided the releavant PR.</p>
<p>Added a <code>createdPostInitialization</code> final public
variable in SubstituteLogger.</p>
<p>Fixed typo in <code>SubstituteServiceProvider</code> class
name. See also <a
href="https://jira.qos.ch/browse/SLF4J-426">SLF4J-426</a>.</p>
<p>Updated slf4j-api module's MANIFEST.MF file
"Bundle-RequiredExecutionEnvironment" entry value to J2SE-1.6.
</p>
<hr noshade="noshade" size="1"/>
<h3>October 20th, 2017 - Release of SLF4J 1.8.0-beta0</h3>
<p>Given that the same package name in different modules is a
showstopper in Java 9, the <code>org.slf4j.impl</code> package has
been removed from all slf4j modules. In other words starting with
slf4j 1.8.0-beta0 "providers" will no longer act as 1.7.x/1.6.x
"bindings". See the <a class="big bold"
href="faq.html#changesInVersion18">relevant FAQ</a> entry for
details.</p>
<p>
<hr noshade="noshade" size="1"/>
<h3>April 25th, 2017 - Release of SLF4J 1.8.0-alpha2</h3>
<p>The JPMS module names for <code>log4j-over-slf4j</code> and
<code>jcl-over-slf4j</code> are now based on the names of the
artifacts they are intended to replace, respectively log4j v1 and
commons-logging with the presumed module names "log4j" and
"org.apache.commons.logging". This fixes <a
href="https://jira.qos.ch/browse/SLF4J-408">SLF4J-408</a> reported
by Stephen Colebourne.
</p>
<p>Removed unnecessary export of org.slf4j.jul package in
module-info.jar of <code>slf4j-jdk14</code> artifact. This issue
has been reported in <a
href="https://jira.qos.ch/browse/SLF4J-407">SLF4J-407</a> by
Stephen Colebourne.
</p>
<hr noshade="noshade" size="1"/>
<h3>April 13th, 2017 - Release of SLF4J 1.8.0-alpha1</h3>
<p>Removed spurious System.out.println in the slf4j-log4j12
module. See <a
href="https://jira.qos.ch/browse/SLF4J-406">SLF4J-406</a> for
details.</p>
<hr noshade="noshade" size="1"/>
<h3>April 7th, 2017 - Release of SLF4J 1.8.0-alpha0</h3>
<p>SLF4J has been modularized per <a
href="http://openjdk.java.net/projects/jigsaw/spec/">JPMS/Jigsaw</a>
specificaton. The resulting internal changes are <a class="big bold"
href="faq.html#changesInVersion18">detailed</a> in the FAQ
page.</p>
<p>Due to the lack of interest, slf4j-android and slf4j-jcl modules
have been dropped with no replacement.</p>
<hr noshade="noshade" size="1"/>
<h3>March 16th, 2017 - Release of SLF4J 1.7.25</h3>
<p>In slf4j-simple module, added a configuration option to
enable/disable caching of the System.out/err target. This
enhancement was requested in <a
href="https://jira.qos.ch/browse/SLF4J-395">SLF4J-395</a> by
Hervé Boutemy.
</p>
<p>Refactored several internal methods in <code>SimpleLogger</code>
in order to ease its extension. This enhancement was requested in
<a href="https://jira.qos.ch/browse/SLF4J-394">SLF4J-394</a> by
Hervé Boutemy.</p>
<p>Updates the <code>serialVersionId</code> of
<code>BasicMarker</code> in order to ease diagnosis of
serialization issues with this class.
</p>
<hr noshade="noshade" size="1"/>
<h3>February 23rd, 2017 - Release of SLF4J 1.7.24</h3>
<p>In its MANIFEST.MF file, the jcl-over-slf4j module now declares
exporting <code>org.apache.commons.logging</code> version "1.2"
instead of version "1.1.1". Otherwise, no java code has
changed. The change was requested in <a
href="https://jira.qos.ch/browse/SLF4J-383">SLF4J-383</a> reported
by Florian Kolbe and only affects OSGi environments.
</p>
<p>Fix performance bottleneck in <code>BasicMarker</code> which now
uses a <code>CopyOnWriteArray</code> instead of a
<code>Vector</code>. This problem was raised in <a
href="https://jira.qos.ch/browse/SLF4J-240">SLF4J-240</a> by Ralph
Goers.</p>
<p>CAL10N is now declared as an optional dependency of
slf4j-ext. This fixes <a
href="https://jira.qos.ch/browse/SLF4J-369">SLF4J-369</a> reported
by Matej Spiller-Muys.
</p>
<hr noshade="noshade" size="1"/>
<h3>February 15th, 2017 - Release of SLF4J 1.7.23</h3>
<p class="highlight">Update to SLF4J version 1.7.23 to enable
slf4j-log4j12 to run under Java 9.</p>
<p>When running under Java 9, log4j version 1.2.x is unable to
correctly parse the "java.version" system property. Assuming an
inccorect Java version, it proceeded to disable its MDC
functionality. The slf4j-log4j12 module shipping in this release
fixes the issue by tweaking MDC internals by reflection, allowing
log4j to run under Java 9. See also <a
href="https://jira.qos.ch/browse/SLF4J-393">SLF4J-393</a>.</p>
<p>Fixed issue <code>EventRecodingLogger</code> not saving marker
data in the event. This issue was reported in <a
href="http://jira.qos.ch/browse/SLF4J-379">SLF4J-379</a> by Manish
Soni with Jonas Neukomm providing the relevant PR.
</p>
<p>The slf4j-simple module now uses the latest reference to
System.out or System.err. In previous releases the reference was
set at the beginning and re-used. This change fixes <a
href="https://jira.qos.ch/browse/SLF4J-389">SLF4J-389</a> reported
by Igor Polevoy.</p>
<hr noshade="noshade" size="1"/>
<h3>December 13th, 2016 - Release of SLF4J 1.7.22</h3>
<p>Add support for OFF level in <code>SimpleLogger</code>. This
feature was requested in <a
href="http://jira.qos.ch/browse/SLF4J-332">SLF4J-332</a>.
</p>
<p>Allow re-initialization of <code>SimpleLogger</code> by
"friends". This change was requested in <a
href="http://jira.qos.ch/browse/SLF4J-370">SLF4J-370</a> by
Christian Schulte.
</p>
<hr noshade="noshade" size="1"/>
<h3>April 4th, 2016 - Release of SLF4J 1.7.21</h3>
<p>Fixed a memory leak due to a race-condition occurring during
SLF4J initialization. In that case, some
<code>SubstituteLogger</code> instances may continue to accumulate
log events until the JVM eventually runs out of memory. This issue
was reported in <a
href="http://jira.qos.ch/browse/SLF4J-364">SLF4J-364</a> by Jeff
Flanigan.</p>
<p><code>LoggerFactory</code> makes sure to release all resources
referenced by <code>SubstituteLoggerFactory</code>
post-initialization. See also <a
href="http://jira.qos.ch/browse/SLF4J-366">SLF4J-366</a>
</p>
<hr noshade="noshade" size="1"/>
<h3>March 29th, 2016 - Release of SLF4J 1.7.20</h3>
<p class="red">Releases 1.7.19 and 1.7.20 suffer from a <a
href="http://jira.qos.ch/browse/SLF4J-364">memory leak</a>. Please
use version 1.7.21 or later instead.</p>
<p>Fixed initialization problem encountered on the Google App
Engine platform with SLF4J version 1.7.19 but not other versions.
The problem was reported in <a
href="http://jira.qos.ch/browse/SLF4J-363">SLF4J-363</a> by Osvaldo
Pinali Doederlein.
</p>
<hr noshade="noshade" size="1"/>
<h3>March 14th, 2016 - Release of SLF4J 1.7.19</h3>
<p class="red">Releases 1.7.19 and 1.7.20 suffer from a <a
href="http://jira.qos.ch/browse/SLF4J-364">memory leak</a>. Please
use version 1.7.21 or later instead.</p>
<p>Fixed <code>NullPointerException</code> thrown by
org.slf4j.helpers.SubstituteLogger.isDelegateEventAware(SubstituteLogger.java:353). This
issue was reported by Jeffrey Zhao in <a
href="http://jira.qos.ch/browse/SLF4J-361">SLF4J-361</a>.</p>
<p>Initialization of the slf4j-log4j12 module is now thread safe
fixing <a href="http://jira.qos.ch/browse/SLF4J-358">SLF4J-358</a>.
</p>
<p>Initialization of the slf4j-jdk14 module is now thread safe
fixing <a href="http://jira.qos.ch/browse/SLF4J-359">SLF4J-359</a>.
</p>
<hr noshade="noshade" size="1"/>
<h3>26th of February, 2016 - Release of SLF4J 1.7.18</h3>
<p>Initialization of the slf4j-simple module is now thread safe
fixing <a href="http://jira.qos.ch/browse/SLF4J-356">SLF4J-356</a>.
</p>
<p>Fixed Import-Package statement in MANIFEST.MF for the
slf4j-log4j12 module. This isssue was reported by Mathieu Sebire in
<a href="jira.qos.ch/browse/SLF4J-357">SLF4J-357</a> who also
provided the relevant pull request.
</p>
<hr noshade="noshade" size="1"/>
<h3>19th of February, 2016 - Release of SLF4J 1.7.17</h3>
<p>When running under Android, skip binding ambiguity check during
initialization for better performance. The fix introduced in version 1.7.14
was not effective.
</p>
<hr noshade="noshade" size="1"/>
<h3>11th of February, 2016 - Release of SLF4J 1.7.16</h3>
<p>The <code>MANIFEST.MF</code> file in slf4j-api.jar module was
missing an export statement for the <em>org.slf4j.event</em>
package. <code>MANIFEST.MF</code> files in other modules were
missing the mirroring import statements.
</p>
<hr noshade="noshade" size="1"/>
<h3>9th of February, 2016 - Release of SLF4J 1.7.15</h3>
<p>In previous versions of SLF4J, if the application was already
multi-threaded at the time the first SLF4J logger was created, logs
made during the SLF4J initialization phase were lost. New code
added in relation with <a
href="http://jira.qos.ch/browse/SLF4J-353">SLF4J-353</a> fixes this
problem by storing and replaying logging calls made during
initialization.
</p>
<hr noshade="noshade" size="1"/>
<h3>24th of January, 2016 - Release of SLF4J 1.7.14</h3>
<p>The assignment of the INITIALIZATION_STATE variable in
<code>LoggerFactory</code> is now guaranteed to be consistent for
multi-thread initializations. More specifically, only one thread
will see INITIALIZATION_STATE as UNINITIALIZED with all other
threads observing either ONGOING_INITIALIZATION or the final result
of the initialization. However, SLF4J initialization is still
non-blocking and re-entrant, in the sense that if some thread tries
to obtain loggers during ongoing initialization by another (or
same) thread, instances of <code>SubstituteLogger</code> are
returned. This fixes <a
href="http://jira.qos.ch/browse/SLF4J-167">SLF4J-167</a>.
</p>
<p>Moved delegation check loop from <em>log4j-over-slf4j.jar</em>
to <em>slf4j-log4j12.jar</em> for better targeted loop checks. The
rationale behind the change is explained by Frans Orsel in <a
href="http://jira.qos.ch/browse/SLF4J-345">SLF4J-345</a> who also
provided the relevant pull request.
</p>
<p>During initialization the binding ambiguity check is skipped
under Android in order to improve performance. This change was
requested by Nitin Verma in <a
href="http://jira.qos.ch/browse/SLF4J-328">SLF4J-328</a> who also
provided the relevant patch.
</p>
<p>The <code>StaticMarkerBinder</code> and
<code>StaticMDCBinder</code> classes shipping in various SLF4J
bindings now offer a <code>getSingletion()</code> method. The
<code>org.slf4j.MDC</code> and <code>MarkerFactory</code> classes
now perform binding by invoking the <code>getSingleton()</code>
method first and if in the presence of an older version of SLF4J
with said method missing, then by accessing the SINGLETON
field. This backward compatible change was requested by Rufus
Alexander in <a
href="http://jira.qos.ch/browse/SLF4J-347">SLF4J-347</a> in order
to implement an SLF4J binding in Clojure, namely <a
href="https://github.com/fzakaria/slf4j-timbre">slf4j-timbre</a>.
</p>
<p>Fix the OSGI <code>Bundle-Version</code> property in the
<em>MANIFEST.MF</em> of osgi-over-slf4j module. This issue was
reported by Antoine Dessaigne in <a
href="http://jira.qos.ch/browse/SLF4J-341">SLF4J-341</a>.
</p>
<hr noshade="noshade" size="1"/>
<h3>10th of November, 2015 - Release of SLF4J 1.7.13</h3>
<p>Fixed <code>LoggerFactory</code> initialisation problem in
presence of SecurityManager denying "createSecurityManager" runtime
permission. See <a
href="http://jira.qos.ch/browse/SLF4J-324">SLF4J-324</a> for
further details.
</p>
<p>Fixed issue with <code>BasicMDCAdapter</code> leaking MDC
information to non-child threads. This problem was reported by
Lukasz Cwik in <a
href="http://jira.qos.ch/browse/SLF4J-316">SLF4J-316</a> who also
provided the relavant pull request.
</p>
<p>More robust handling of ill-formatted input strings by
SLF4JBridgeHandler. This issue was reported in <a
href="http://jira.qos.ch/browse/SLF4J-337">SLF4J-337</a> by Rodolfo
Udo Labsch.
</p>
<p>House cleaning of our project's Maven <em>pom.xml</em> files, an
initiative undertaken by Jeremy Landis.
</p>
<p>Added <code>getAdditivity()</code> method method in
<code>Category</code> class in the log4j-over-slf4j module. This
addition was requested by Milo Felipe <a
href="http://jira.qos.ch/browse/SLF4J-309">SLF4J-309</a> with
Dimitrios Liapis providing the relavant pull request.
</p>
<p>Added the <code>assertLog(boolean, String)</code> method in the
<code>Category</code> class, in module log4j-over-slf4j.</p>
<p>In the log4j-over-slf4j module, removed misplaced Layout.java
file. This issue was reported in <a
href="http://jira.qos.ch/browse/SLF4J-218">SLF4J-218</a> by Joshua
M Steward with Alfredo Ramos providing the relavant pull request.
</p>
<hr noshade="noshade" size="1"/>
<h3>March 26th, 2015 - Release of SLF4J 1.7.12</h3>
<p>All java files have been reformatted to with the code formatter
style defined in <i>codeStyle.xml</i>. This style uses 4 spaces for
indentation and a maximum line width of 160.</p>
<p>As SLF4J requires JDK 1.5 or later, the
<code>Bundle-RequiredExecutionEnvironment</code> declaration in the
various MANIFEST files have been updated to J2SE-1.5.
</p>
<p>Added missing Bundle-ManifestVersion attribute in the MANIFEST
files in log4j-over-slf4j. The issue was raised in <a
href="http://jira.qos.ch/browse/SLF4J-321">SLF4J-231</a> by Nikolas
Falco who also provided the the appropriate pull request. </p>
<p>Added <code>getAppender(String)</code> method in
<code>Category</code> class in the log4j-over-slf4j module. This
addition was requested by Ramon Gordillo in <a
href="http://jira.qos.ch/browse/SLF4J-319">SLF4J-319</a>.
</p>
<p>Added <code>setThreshold</code> method in
<code>AppenderSkeleton</code> class in the log4j-over-slf4j
module. This addition was requested by Dimitrios Liapis who also
provided the appropriate pull request.
</p>
<p>Added <code>getParent</code> method in <code>Category</code>
class in the log4j-over-slf4j module. This addition was requested
by Himanshu Bhardwaj in <a
href="http://jira.qos.ch/browse/SLF4J-318">SLF4J-318</a>.
</p>
<hr noshade="noshade" size="1"/>
<h3>6th of January, 2015 - Release of SLF4J 1.7.10</h3>
<p>The <code>MDC.putCloseable</code> method now explicitly returns
<code>MDC.MDCloseable</code> instead of the more generic
<code>java.io.Closeable</code>. This in turn allows one to write
try-with-resources statement without a catch clause. Many thanks to
William Delanoue for proposing this change.</p>
<p>The various constructors in <code>FileAppender</code> in the
log4j-over-slf4j module are now public.
</p>
<hr noshade="noshade" size="1"/>
<h3>16th of December, 2014 - Release of SLF4J 1.7.9</h3>
<p class="highlight"><a href="codes.html#loggerNameMismatch">Spot
incorrectly named loggers</a> by setting the
<code>slf4j.detectLoggerNameMismatch</code> system property to
true.</p>
<p><a href="codes.html#loggerNameMismatch">Spot incorrectly named
loggers</a> by setting the
<code>slf4j.detectLoggerNameMismatch</code> system property to
true. This significant feature was contributed by Alexander
Dorokhine.</p>
<p>Added <code>MDC.putCloseable</code> method so that it can be
used as a <a
href="https://docs.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html">closeable
resource</a> under Java 7.</p>
<p>Added <code>getContext</code> method returning a hashtable in
org.apache.log4j.MDC in the log4j-over-slf4j module.
</p>
<p>The introduction of the @Nonnull JSR 305 annotation in SLF4J
version 1.7.8 causes the Scala compiler to fail. This is issue has
been documented in <a
href="https://issues.scala-lang.org/browse/SI-5420">SI-5420</a>. Given
that many Scala users will be affected by this issue for the
foreseeable future, we have decided to renounce the user of JSR 305
annotations in SLF4J for the time being.
</p>
<p>Numerous small code improvements too minor to be listed
here.</p>
<hr noshade="noshade" size="1"/>
<h3>4th of April, 2014 - Release of SLF4J 1.7.7 </h3>
<p>SFL4J API now uses generics. This enhancement was contributed by
Otavio Garcia. Due to erasure of generics in Java, the changes are
backward-compatible.</p>
<p>The slf4j-migrator can now convert statements using the long deprecated
<code>Category</code> class.</p>
<p>Added the <code>SimpleLayout</code> and
<code>FileAppender</code> classes to the log4j-over-slf4j
module.</p>
<h3>February 5th, 2014 - Release of SLF4J 1.7.6</h3>
<p>Added slf4j-android module to the slf4j distribution. This
module is contributed by Andrey Korzhevskiy.</p>
<p>Loggers created during the initialization phase are no longer
<code>NOPLoggers</code> which drop all logging calls. Instead,
SLF4J now creates substitute loggers which delegate to the
appropriate logger implementation after the initilization phase
completes. Only calls made to these loggers during the
initialization phase are dropped. This enhacement was proposed in
<a href="http://jira.qos.ch/browse/SLF4J-302">SLF4J-302</a>
by Chetan Mehrotra.
</p>
<p>Improvements to the <code>exit()</code> and
<code>throwing()</code> methods in <code>XLogger</code>. This
enhacement was requested in <a
href="http://jira.qos.ch/browse/SLF4J-188">SLF4J-188</a>.
</p>
<p>Concunrrency improvement in <code>MessageFormatter</code>. This
improvement was contributed by Vivek Pathak in a <a
href="https://github.com/qos-ch/slf4j/pull/52">pull
request</a>.</p>
<p>Concunrrency improvement in
<code>BasicMarkerFactory</code>. This improvement was contributed
by Mikhail Mazursky in a <a
href="https://github.com/qos-ch/slf4j/pull/40">pull
request</a>.</p>
<p><code>JCLLoggerAdapter</code> was incorrectly invoking
<code>isDebugEnabled</code> calls in its <code>trace()</code>
methods. This issue was reported in <a
href="http://jira.qos.ch/browse/SLF4J-272">SLF4J-272</a>.
</p>
<p>In the log4j-over-slf4j module, the <code>setLevel</code> method
in the <code>Category</code> class. This fixes <a
href="http://jira.qos.ch/browse/SLF4J-270">SLF4J-270</a>. Alfredo
Ramos provied the relevant patch.
</p>
<p>In the log4j-over-slf4j module, added empty implementations for
<code>OptionHander</code>, <code>WriterAppender</code>,
<code>ConsoleAppender</code> and <code>AppenderSkeleton</code>
classes.
</p>
<hr noshade="noshade" size="1"/>
<h3>25th of March, 2013 - Release of SLF4J 1.7.5</h3>
<p class="highlight">Given the significance of these performance
improvements, users are highly encouraged to migrate to SLF4J
version 1.7.5 or later. </p>
<p><span class="label notice">performance improvements</span> The
logger factories in most SLF4J modules namely in jcl-over-slf4j,
log4j-over-slf4j, slf4j-jcl, slf4j-jdk14, slf4j-log4j12, and
slf4j-simple now use a <code>ConcurrentHashMap</code> instead of a
regular <code>HashMap</code> to cache logger instances. This change
significantly improves logger retrieval times at the cost of some
memory overhead. This improvement was requested in <a
href="http://jira.qos.ch/browse/SLF4J-289">SLF4J-289</a>
by Taras Tielkes who also provided the relevant patch.
</p>
<hr noshade="noshade" size="1"/>