/
news.html
executable file
·3362 lines (2653 loc) · 132 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>News</title>
<link rel="stylesheet" type="text/css" href="css/common.css" />
<link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
<link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
<link rel="stylesheet" type="text/css" href="css/prettify.css" media="screen" />
</head>
<body onload="prettyPrint()">
<script type="text/javascript">prefix='';</script>
<script type="text/javascript" src="js/prettify.js"></script>
<script src="templates/header.js" type="text/javascript"></script>
<div id="left">
<noscript>Please turn on Javascript to view this menu</noscript>
<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">
<h2>Logback News</h2>
<p>You can receive logback-related announcements by subscribing to
the <a href="http://www.qos.ch/mailman/listinfo/announce">QOS.ch
announce</a> mailing list.</p>
<hr width="80%" align="center" />
<h3>February , 2018, Release of version 1.3.0-beta0</h3>
<p>Fix issue with properties containing JSON strings as reported
in <a
href="https://jira.qos.ch/browse/LOGBACK-1101">LOGBACK-1101</a>.
</p>
<hr width="80%" align="center" />
<h3>January 30th, 2018, Release of version 1.3.0-alpha2</h3>
<p>Depend on SLF4J version 1.8.0-beta1 instead of
1.8.0-beta1-SNAPSHOT.</p>
<p>Fix build under Travis.</p>
<h3>January 30th, 2018, Release of version 1.3.0-alpha1</h3>
<p class="highlight">The 1.3.x series requires Java 7 at
<b>runtime</b>.</p>
<p class="highlight">The 1.3.x series is Jigsaw/Java 9
modularized and requires slf4j-api version 1.8.x.</p>
<p>The 1.3.x series is Jigsaw/Java 9 modularized and requires
slf4j-api version 1.8.x.</p>
<p>The 1.3.x series requires Java 7 at <b>runtime</b>
<p>Building logback from source requires Java 9.</p>
<br/>
<div class="breaking">
<p>Given that all currently available versions of Groovy are
incompatible with Java 9, at least when built with Maven, we have
momentarily <b>dropped support for Groovy configuration</b>, a.k.a
Gaffer. For details refer to <a
href="http://markmail.org/thread/nekeppbvwrfl7hbb#query:+page:1+mid:obdyvuv24kqpxm6v+state:results">this
thread</a>.</p>
</div>
<br/>
<div class="breaking">
<p>Due to lack of user interest, logback-classic no longer
supports <a href="manual/loggingSeparation.html">logging
separation</a> by way of <code>ContextSelector</code>.</p>
</div>
<p>In the absence of a <span class="attr">class</span> attribute,
the <code>shutdownHook</code> configuration directive now
correctly assumes
<code>ch.qos.logback.core.hook.DefaultShutdownHook</code>
class. This fixes <a
href="https://jira.qos.ch/browse/LOGBACK-1162">LOGBACK-1162</a>
reported by Alex Selesse.</p>
<p>Logback's internal <code>ThreadPoolExecutor</code> now has an
initial pool of 1 thread instead of 8 previously.</p>
<p>TimeBasedArchiveRemover is now able to deal with indexes over
999. This fixes <a
href="https://jira.qos.ch/browse/LOGBACK-1175">LOGBACK-1175</a>
reported by Diego Furtado who also provided the relevant PR.
</p>
<p><code>SizeAndTimeBasedRollingPolicy</code> will correctly
remove archived log files created within a given time period even
if the last modified date for said files has been modifed since
archiving or is otherwise incorrect. This fixes <a
href="https://jira.qos.ch/browse/LOGBACK-1361">LOGBACK-1361</a> as
reported by Peter Risko.</p>
<p>String to Level conversion now handles strings with tailing
spaces. This fixes <a
href="https://jira.qos.ch/browse/LOGBACK-1288">LOGBACK-1288</a>
reported by Gaurav Khanna.
</p>
<p><code>MDCFilter</code> will enforce the presence of
<code>MDCKey</code> and <code>value</code> properties, refusing to
start when either property absent. This fixes <a
href="https://jira.qos.ch/browse/LOGBACK-1165">LOGBACK-1165</a>
reported by Martin Steiger.
</p>
<p>Added the feature to update mime message before sending the
email. This enhancement was requested in <a
href="https://jira.qos.ch/browse/LOGBACK-1284">LOGBACK-1284</a> by
Miguel Vale who also provided the relevant PR.</p>
<p>If omitted, the <span class="option">scanPeriod</span>
attribute in configuration file defaults to 1 minute. The
documentation <a
href="manual/configuration.html#autoScan">stated
as much</a> but the code had not followed through. This issue was
reported in <a
href="https://jira.qos.ch/browse/LOGBACK-1194">LOGBACK-1194</a>
with F. Buechler providing the appropriate patch.</p>
<p>Updated JavaMail version to 1.6. This fixes <a
href="https://jira.qos.ch/browse/LOGBACK-1094">LOGBACK-1094</a>
reported by Romain Moreau.
<p>Removed "final" modifier for the
<code>LoggerContext.getLogger(String)</code> method. This fixes <a
href="https://jira.qos.ch/browse/LOGBACK-1308">LOGBACK-1308</a>
reported by Richard Sand.</p>
<hr width="80%" align="center" />
<h3>January 18th, 2018, Release of version 1.3.0-alpha0</h3>
<p>Added support for minimum length in %i filename pattern. This
fixes <a
href="https://jira.qos.ch/browse/LOGBACK-1248">LOGBACK-1248</a>
with John Gardiner Myers providing the relevant patch.</p>
<p>Correct parsing of <code>java.version</code> system property
for Java 9 and later. This fixes <a
href="https://jira.qos.ch/browse/LOGBACK-1260">LOGBACK-1260</a>
with Patrick Reinhart providing the relevant patch.
</p>
<p>ConsoleAppender now works with consoles confused by output
strings of zero length, e.g. Java Web Start. This fixes issue <a
href="https://jira.qos.ch/browse/LOGBACK-1282">LOGBACK-1282</a>
reported by Clas Forsberg.</p>
<hr width="80%" align="center" />
<h3>March 30th, 2017, Release of version 1.2.3</h3>
<p>Fix unintentional dependency on
<code>OutputStreamAppender</code> in
<code>LayoutWrappingEncoder</code> as reported in <a
href="https://jira.qos.ch/browse/LOGBACK-1287">LOGBACK-1287</a>.
</p>
<p>Fix spurious <code>System.out.println</code> in AsyncAppender's
worker thread. This issue was reported in <a
href="https://jira.qos.ch/browse/LOGBACK-1292">LOGBACK-1292</a> by
Nikolas Loutas with Thibault Meyer the relevant patch.</p>
<p>ConsoleAppender exception when run under Java WebStart. This
problem was reported in <a
href="https://jira.qos.ch/browse/LOGBACK-1282">LOGBACK-1282</a> by
Clas Forsberg.</p>
<h3>March 16th, 2017, Release of version 1.2.2</h3>
<p><code>AsyncAppender</code> no longer drops events when the
current thread has its interrupt flag set. This issue was reported
in <a
href="https://jira.qos.ch/browse/LOGBACK-1247">LOGBACK-1247</a> by
Jakob Bergendahl who also provided the relevant pull request.
</p>
<p>Removed <code>JMSQueueAppender</code> and
<code>JMSTopicAppender</code>. These appenders were undocumented
and had no apparent users.</p>
<p>Remove comment in logback-classic's
<code>META-INF/services/javax.servlet.ServletContainerInitializer</code>
file in order to keep Wildfly 8 happy. This issue was reported in
<a href="https://jira.qos.ch/browse/LOGBACK-1265">LOGBACK-1265</a>
by Andy Wilkinson.
</p>
<p><code>FileSize.toString()</code> now reports files sizes in GB
in addition to sizes in MB and KB and Bytes. This fixes issue <a
href="https://jira.qos.ch/browse/LOGBACK-1278">LOGBACK-1278</a>.</p>
<hr width="80%" align="center" />
<h3>March 1st, 2017, Release of version 1.1.11</h3>
<p>Fix thread-safety issue with <code>PatternLayoutBase</code>
reported in <a
href="https://jira.qos.ch/browse/LOGBACK-1270">LOGBACK-1270</a> by
Artem Bilan. Note that the fix was already present in the 1.2.x
series and was back-ported to the 1.1.x series.</p>
<hr width="80%" align="center" />
<h3>February 9th, 2017, Release of version 1.2.1</h3>
<p>To ensure backward compatibility of configuration files, the
<span class="prop">immediateFlush</span> property set for a
<code>LayoutWrappingEncoder</code> is propagated to the enclosing
<code>OutputStreamAppender</code>.
</p>
<hr width="80%" align="center" />
<h3>February 8th, 2017, Release of version 1.2.0</h3>
<div class="breaking">
<h4><code>Encoder</code> interface has changed and is no longer
expected to handle an <code>OutputStream</code>.</h4>
</div>
<p><code>Encoder</code> interface has changed and is no longer
expected to handle an <code>OutputStream</code>. This
simplification allows finer-grain locking resulting in <a class="big"
href="https://docs.google.com/spreadsheets/d/1cpb5D7qnyye4W0RTlHUnXedYK98catNZytYIu5D91m0/edit?usp=sharing">significantly
improved performance</a>.
</p>
<p class="highlight">Release 1.2.0 fixes a rather severe
serialization vulnerability in <code>SocketServer</code> and
<code>ServerSocketReceiver</code>. Users running these components
should upgrade immediately.</p>
<p>This release fixes a rather severe serialization vulnerability
in <code>SocketServer</code> and
<code>ServerSocketReceiver</code>. Users running these components
should upgrade immediately.
</p>
<p>In <code>TimeBasedRollingPolicy</code>, fixed issue with <span
class="option">totalSizeCap</span> of more than 2^31. This problem
was reported in <a
href="https://jira.qos.ch/browse/LOGBACK-1231">1231</a> by Simon
Teng.
</p>
<p>Logback-classic now searches for the file
<em>logback-test.xml</em> first, <em>logback.groovy</em> second
and <em>logback.xml</em> third. In previous versions
<em>logback.groovy</em> was looked up first which was non-sensical
in presense of <em>logback-test.xml</em>. This fixes <a
href="http://jira.qos.ch/browse/LOGBACK-1245">LOGBACK-1245</a>
reported by Joern Huxhorn.
</p>
<hr width="80%" align="center" />
<h3>February 5th, 2017, Release of version 1.1.10</h3>
<p>Several changes to improve throughput (see <a
href="https://docs.google.com/spreadsheets/d/1cpb5D7qnyye4W0RTlHUnXedYK98catNZytYIu5D91m0/edit?usp=sharing"><b>spreadsheet</b></a>)
</p>
<ol>
<li>The <code>ReentrantLock</code> in
<code>OutputStreamAppender</code> is now "unfair". In previous
versions of logback, a fair lock was used. Fair locks are much
slower. Just as importanly, logback has no mandate to influence
thread scheduling.
</li>
<li><code>FileAppender</code> now offers the <span
class="option">bufferSize</span> option. Previously, a
fixed-size 8K buffer was used. Increasing the <span
class="option">bufferSize</span>, for example to 256K,
significantly reduces thread-contention.
</li>
<li>Critical parts of the code now use
<code>COWArrayList</code>, a custom developed allocation-free
lock-free thread-safe implementation of the {@link List}
interface. It is optimized for cases where iterations over the
list vastly outnumber modifications on the list. It is based on
<code>CopyOnWriteArrayList</code> but allows allocation-free
iterations over the list.
</li>
<li>In <code>PatternLayoutBase</code> the same
<code>StringBuilder</code> is used over and over to reduce
memory allocation. This is safe as long as the owning appender
guarantees serial access to its layout. In the next version of
logback, i.e. 1.2.x, the read-write lock will no longer protect
access to the layout and there will be no guarantee of
serial access.
</li>
</ol>
<p>In web-applications, logback-classic will <a
href="manual/configuration.html#webShutdownHook">automatically
install a listener</a> which will stop the logging context and
release resources when your web-app is reloaded. This enhancement
was requested <a
href="https://jira.qos.ch/browse/LOGBACK-1170">LOGBACK-1170</a> by
Martin Wegner.
</p>
<p>The <code>AccessEvent.prepareForDeferredProcessing()</code>
method was not idempotent. This caused subtle bugs under
Jetty. See <a
href="https://jira.qos.ch/browse/LOGBACK-1189">LOGBACK-1189</a>
for details. Many thanks to Per Olesen, Evan Meagher, Nick Babcock
and Mark Elliot for hunting down this bug.
</p>
<p>As it may be time consuming in certain environments, the
HOSTNAME property is now computed lazily. This optimization
requested in <a
href="https://jira.qos.ch/browse/LOGBACK-1221">LOGBACK-1221</a> by
Eugene Petrenko.
</p>
<p>Joran now supports external XML entities. This feature was
requested in <a
href="https://jira.qos.ch/browse/LOGBACK-1091">1091</a> and the
relevant PR graciously provided by Jonas Neukomm.
</p>
<hr width="80%" align="center" />
<h3>January 20th, 2017, Release of version 1.1.9</h3>
<p>Logback's internal executor service had a thread pool size of 2
which could be used up rather quickly, e.g. configuration scanning
in addition to an active <code>ServerSocketAppender</code>. When
both threads where permanently in use, compression could not
proceed. To alleviate this problem, the thread pool size has been
increased to 8. See issue <a
href="https://jira.qos.ch/browse/LOGBACK-1238">LOGBACK-1238</a>
for more details.
</p>
<p>Fixed issue with <code>FileAppender</code> instances embedded
within <code>SiftingAppender</code> reporting filename collisions
after reaching timeout and subsequently restarted. This problem
was reported in <a
href="https://jira.qos.ch/browse/LOGBACK-1167">LOGBACK-1167</a> by
Michael Edgar.
</p>
<p>Fixed <code>SizeAndTimeBasedFNATP</code> deprecation warning
emitted even the replacement,
i.e. <code>SizeAndTimeBasedRollingPolicy</code>, is in use. See <a
href="http://jira.qos.ch/browse/LOGBACK-1236">LOGBACK-1236</a>. This
issue was reported by Claudius Nicolae.
</p>
<p>Added proper implementation for
<code>LobackValve.getScheduledExecutorService()</code> method. The
missing implementation manifested itself in the form of an
<code>UnsupportedOperationException</code> thrown by
LogbackValve. This problem is further described in <a
href="http://jira.qos.ch/browse/LOGBACK-1181">LOGBACK-1181</a>
reported by Andreas von Roepenack.
</p>
<hr width="80%" align="center" />
<h3>December 9th, 2016, Release of version 1.1.8</h3>
<p>Removed the two period safeguard, aka untouchable periods, for
archive removal beyond the size specified by <span
class="option">totalSizeCap</span> in
<code>TimeBasedRollingPolicy</code>. It turns out the safegaurd is
not required and is unexpected as attested by <a
href="http://jira.qos.ch/browse/LOGBACK-1166">LOGBACK-1166</a>.
</p>
<p>Fixed issue with Joran incorrectly reporting "Unexpected
aggregationType AS_BASIC_PROPERTY_COLLECTION". This issue was
raised in <a
href="http://jira.qos.ch/browse/LOGBACK-1158">LOGBACK-1158</a> by
Christian Hübner.
</p>
<p>Gaffer (logback's groovy configurator) now supports the
<code>valueOf</code> convention. This issue was raised in <a
href="http://jira.qos.ch/browse/LOGBACK-1232">LOGBACK-1232</a> by
Frans Orsel.
</p>
<p>The <code>org.slf4j.impl.StaticLoggerBinder</code> class
shipping in logback-classic no longer catches
<code>Throwable</code> but <code>Exception</code>. This change was
requested in <a
href="http://jira.qos.ch/browse/LOGBACK-1159">LOGBACK-1159</a> by
David J. M. Karlsen.
</p>
<p><code>BeanDescriptionFactory</code> no longer outputs a
superflous warning message in case the class contains bridge
methods. This fixes <a
href="http://jira.qos.ch/browse/LOGBACK-1164">LOGBACK-1164</a>
reported by Phil Clay.
</p>
<!--
<p>Added logback-bom module for use as a Maven "Bill of Materials"
<em>pom</em> file. This was requested in <a
href="http://jira.qos.ch/browse/LOGBACK-1157">LOGBACK-1157</a>
Joerg Sesterhenn.</p>
-->
<hr width="80%" align="center" />
<h3>March 29th, 2016, Release of version 1.1.7</h3>
<p>Logback is now <a href="
http://docs.oracle.com/javase/8/docs/technotes/guides/compactprofiles/compactprofiles.html">compact3
profile</a> compatible. This improvement was requested in <a
href="http://jira.qos.ch/browse/LOGBACK-1071">LOGBACK-1071</a> by
Axel Fontaine with Max Urech providing the relevant pull-request.
</p>
<p>Fixed <code>ConcurrentModificationException</code> being thrown
when the <code>reset()</code> method is invoked on the
<code>LoggerContext</code> instance. This issue was reported in <a
href="http://jira.qos.ch/browse/LOGBACK-397">LOGBACK-397</a> by
Szczepan Faber with Ross Sargant providing the relevant test case.
</p>
<p><code>TimeBasedRollingPolicy</code> now supports the <a
href="manual/appenders.html#tbrpTotalSizeCap"><span
class="option">totalSizeCap</span></a> property which allows the
user to limit the total size of archived logs.
</p>
<p><a
href="manual/appenders.html#SizeAndTimeBasedRollingPolicy"><code>SizeAndTimeBasedRollingPolicy</code></a>
offers the same functionality as
<code>SizeAndTimeBasedFNATP</code> did previously but with a
simpler configuration structure.
</p>
<p>Archive removal by <code>RollingFileAppender</code> is now
performed asynchronously.</p>
<p>Unnecessary and incompatible %i token in <span
class="option">fileNamePattern</span> option with
<code>RollingFileAppender/TimeBasedRollingPolicy</code> is now
detected and the user alerted to the misconfiguration
problem. This fixes <a
href="http://jira.qos.ch/browse/LOGBACK-1143">LOGBACK-1143</a>.
</p>
<p>Joran can now handle logger names ending with a $, i.e. the
first character in variable substitution. This issue was raised in
<a href="http://jira.qos.ch/browse/LOGBACK-1149">LOGBACK-1149</a>
by by Stevo Slavic.
</p>
<hr width="80%" align="center" />
<h3>February 29th, 2016, Release of version 1.1.6</h3>
<p><code>LogbackValve</code> (in logback-access) now attempts to
load the configuration file as a resource if it cannot be found on
the filesystem (<a
href="http://jira.qos.ch/browse/LOGBACK-1069">LOGBACK-1069</a>). This
is helpful in scenarios where applications are using an embedded
Tomcat server.</p>
<p><code>JMXConfigurator.reloadDefaultConfiguration()</code>
method now tolerates programmatic configuration without a
URL. This change was provided by Vedran Pavic in <a
href="https://github.com/qos-ch/logback/pull/302">PR 302</a>.
</p>
<p><code>RollingFileAppender</code> will output an error message
if the date time pattern in the %d token within the <span
class="option">fileNamePattern</span> is not collision free. This
fixes <a
href="http://jira.qos.ch/browse/LOGBACK-1137">LOGBACK-1137</a>. In
a similar vein, every instance of <code>FileAppender</code> will
now detect if it shares the same <span class="option">File</span>
option value as given for an appender defined earlier. In
addition, <code>RollingFileAppender</code> instances now check for
colliding <span class="option">FileNamePattern</span> values.</p>
<p>Fixed <code>NullPointerException</code> thrown by
<code>RollingFileAppender</code> if the name of the rollover
target path did not contain a parent. This issue was reported in
<a href="http://jira.qos.ch/browse/LOGBACK-1054">LOGBACK-1054</a>
by Paulius Matulionis. Analysis of the problem and the relevant PR
was provided by Ferenc Palkovics.</p>
<p><code>BasicConfigurator.configure</code> method call executes
significatly faster. Improved documentation for configuration
using JDK 1.6 service-provider facility. These changes are in
response to <a
href="http://jira.qos.ch/browse/LOGBACK-1141">LOGBACK-1141</a>
requesting faster logback start-up time.
</p>
<p>Fixed issue with variable substitution with the value ending in
a colon. This problem was reported in <a
href="http://jira.qos.ch/browse/LOGBACK-1140">LOGBACK-1140</a> by
Eric Cook.</p>
<hr width="80%" align="center" />
<h3>February 13th, 2016, Release of version 1.1.5</h3>
<div class="breaking">
<h4>MDC values are no longer inherited by child threads.</h4>
</div>
<p>Child threads no longer inherit MDC values. In previous
versions of logback as well as log4j 1.x, MDC values were
inherited by child threads. Several users have argued convincingly
that MDC inheritance by child threads was unhelpful and even
dangerous. This change fixes <a
href="http://jira.qos.ch/browse/LOGBACK-422">LOGBACK-422</a> and <a
href="http://jira.qos.ch/browse/LOGBACK-624">LOGBACK-624</a>
</p>
<p>When the <code>FileNamePattern</code> string for
<code>RollingFileAppender/SizeAndTimeBasedFNATP</code> lacks a %i
token, then compression for the second archive in the same period
cannot occur as the target file already exists. Under those
circumstances, logback leaves behind .tmp files as reported in <a
href="http://jira.qos.ch/browse/LOGBACK-992">LOGBACK-992</a>, <a
href="http://jira.qos.ch/browse/LOGBACK-173">LOGBACK-173</a> and
<a
href="http://jira.qos.ch/browse/LOGBACK-920">LOGBACK-920</a>. In
this release, this particular condition is detected by
<code>RollingFileAppender</code> which will not start but alert
the user instead.
</p>
<p>AsyncAppender is now configurable to never block. This feature
was requested by Jeff Wartes in <a
href="http://jira.qos.ch/browse/LOGBACK-898">LOGBACK-898</a> with
Jeff Wartes and Gareth Davis providing the relevant patch.
</p>
<hr width="80%" align="center" />
<h3>February 11th, 2016, Release of version 1.1.4</h3>
<div class="breaking">
<h4>Logback 1.1.4 requires SLF4J version 1.7.16 or later.</h4>
</div>
<p>Added event replay support as introduced in SLF4J version
1.7.15. In most circumstances, logack-classic should run fine with
earlier versions of slf4j-api, including all versions in the 1.6.x
and 1.7.x series. However, with a version of slf4j-api.jar earlier
than 1.7.15 in the classpath, attempting introspection of a
<code>Logger</code> instance will result in a
<code>NoClassDefFoundError</code> similar to that shown below.
</p>
<pre class="prettyprint source">Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2451)
at java.lang.Class.privateGetPublicMethods(Class.java:2571)
at java.lang.Class.getMethods(Class.java:1429)
at java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1261)
at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1122)
at java.beans.Introspector.getBeanInfo(Introspector.java:414)
at java.beans.Introspector.getBeanInfo(Introspector.java:161)
</pre>
<p>
</p>
<div class="breaking">
<h4>Packaging data (as output in stack traces) is now disabled
by default.
</h4>
</div>
<p>In case an application throws exceptions frequently, then
computing packaging data can be very costly and will cause the
application to run slower. Making bad worse. To alleviate this
problem, packaging data is no longer computed by default. It has
to be <a href="manual/configuration.html#packagingData">enabled
explicitly</a>. In the absence of explicit instructions, i.e the
user has not specified a converter handling exceptions,
<code>PatternLayout</code> in logback-classic will follow the
settings defining for the logging environment. If packaging data
is disabled, then it add %ex as a suffix in the pattern, and if
packaging data is enabled then %xEx will be added. These changes
fix <a
href="http://jira.qos.ch/browse/LOGBACK-730">LOGBACK-730</a> and
<a href="http://jira.qos.ch/browse/LOGBACK-966">LOGBACK-966</a>.
</p>
<p>Fixed a bug in
<code>TimeBasedFileNamingAndTriggeringPolicyBase</code> causing
time-based rolling policies to always rollover according to the
local system time and ignore the time zone passed in the file name
pattern. The issue was reported by Lukasz Sanek who also provided
the the relevant fix. </p>
<p><code>AsyncAppenderBase</code> now restores the current
thread's interrupt flag when catching an
<code>InterruptedException</code>. The issue
(<a href="http://jira.qos.ch/browse/LOGBACK-910">LOGBACK-910</a>) was
raised by Henrik Nordvik who also provided the relevant fix.</p>
<hr width="80%" align="center" />
<h3>24th of March 2015, Release of version 1.1.3</h3>
<div class="breaking">
<h4>As of version 1.1.3, all logback modules require JDK 1.6
instead of previously JDK 1.5. This change was put to
consultation on the logback mailing lists with no objections
raised.</h4>
</div>
<p>Fixed <code>FileAppender</code>'s prudent mode so that it properly recovers
from IO Errors
(<a href="http://jira.qos.ch/browse/LOGBACK-1046">LOGBACK-1046</a>) </p>
<p>Irrelevant or internal stack trace lines can now be omitted. Pull request
provided by Tomasz Nurkiewicz
(<a href="http://jira.qos.ch/browse/LOGBACK-540">LOGBACK-540</a>).</p>
<p><code>AccessEvent</code> now creates a copy of request attributes when
its <code>prepareForDeferredProcessing()</code> method is called. This makes
attributes visible even if an appender uses a background thread to process
events.
(<a href="http://jira.qos.ch/browse/LOGBACK-1033">LOGBACK-1033</a>)</p>
<p>All threads opened by <code>ch.qos.logback.core.util.ExecutorServiceUtil#THREAD_FACTORY</code>
are now daemons, which fixes an application hang on shutdown when <code>LoggerContext#stop()</code>
is not called (<a href="http://jira.qos.ch/browse/LOGBACK-929">LOGBACK-929</a>).
Note that daemon threads are abruptly terminated by the JVM, which may cause
undesirable results, such as corrupted files written by the <code>FileAppender</code>.
It is still highly recommended for the application to call <code>LoggerContext#stop()</code>
(e.g., in a shutdown hook) to gracefully shutdown appenders.</p>
<p>Fixed an issue with <code>RollingFileAppender</code> where the first
rollover file could be unintentionally deleted, depending on the specified
filename pattern
(<a href="http://jira.qos.ch/browse/LOGBACK-894">LOGBACK-894</a>).</p>
<p>Fixed an issue with <code>TeeHttpServletResponse</code>
where the system default encoding would be used instead of the
response encoding when constructing a new writer
(<a href="http://jira.qos.ch/browse/LOGBACK-1023">LOGBACK-1023</a>).</p>
<p>Fixed <code>ConfigurationDelegate.groovy</code> to allow any appender
that implements <code>AppenderAttachable</code>, which supports third-party
appenders, such as <b>reactor-logback's</b> <code>AsyncAppender</code>
(<a href="http://jira.qos.ch/browse/LOGBACK-1008">LOGBACK-1008</a>)</p>
<p>Added support for specifying the callstack depth range in the
<code>PatternLayout</code>. For example, <code>%caller{1..2}</code>
displays the first two calls in the callstack.</p>
<p>Added HTTP request method to <code>MDCInsertingServletFilter</code>.</p>
<p>Fixed time-zone dependent code in <code>RollingCalendarTest</code>.
(<a href="http://jira.qos.ch/browse/LOGBACK-116">LOGBACK-116</a>)
</p>
<p>Simplified connection logic of SocketApender to reduce multi-threading
overhead and unnecessary instantiation of <code>SocketConnector</code>
objects.</p>
<p>Fixed race condition in <code>SMTPAppenderBase</code> causing missing or
duplicate emails.
(<a href="http://jira.qos.ch/browse/LOGBACK-909">LOGBACK-909</a>)
</p>
<p>Fixed an issue with <code>FileAppender</code> in prudent mode, where
an interrupt could prevent further access to the file
(<a href="http://jira.qos.ch/browse/LOGBACK-875">LOGBACK-875</a>).</p>
<p>Fixed <code>IllegalStateException</code> when multiple threads
write files to same directory
(<a href="http://jira.qos.ch/browse/LOGBACK-128">LOGBACK-128</a>).</p>
<p>Changed queue consumption strategy in <code>AbstractSocketAppender</code>
from "take" to "peek/remove" in order to avoid losing an event on each socket
connection break. Zero is now a deprecated queue size. A queue size of one
should be taken instead to indicate synchronous processing.
(<a href="http://jira.qos.ch/browse/LOGBACK-977">LOGBACK-977</a>)
</p>
<p><code>RequestLogImpl</code> now has an overridable <code>configure</code>
method to allow extending implementations to configure it via methods
other than the <code>logback-access.xml</code> file.</p>
<p>Fixed a bug in <code>AccessEvent</code> which could cause any
<code>AsyncAppender</code> based appender to corrupt the request
headers, request parameters, or response headers, before logging.</p>
<p>SQL scripts to setup your logback database are now provided as
JAR resources
(<a href="http://jira.qos.ch/browse/LOGBACK-948">LOGBACK-948</a>).
</p>
<p>Threads created internally by logback are now named
<i>logback-n</i>, where <i>n</i> is an integer. For the
first thread <i>n</i> is set to 1, for each successive thread
<i>n</i> is incremented by 1.</p>
<p>Added max runtime parameter to <code>AsyncAppender</code> to allow
the appender to flush events, up to a maximum delay, during a stop
of the LoggerContext. This can be used to ensure that all queued
events are flushed.</p>
<p>Added new configuration element <code>shutdownHook</code> to allow the
user to specify a ShutdownHook implementation that will stop the Logback
context upon JVM exit.
</p>
<p><code>BasicStatusManager</code> now prevents adding more than
one instance of <code>OnConsoleStatusListener</code> as a status
listener. This fixes <a
href="http://jira.qos.ch/browse/LOGBACK-976">LOGBACK-976</a>.
</p>
<p><code>TimeBasedRollingPolicy</code> now accepts a time zone in
its <code>%d</code> conversion pattern. (<a
href="http://jira.qos.ch/browse/LOGBACK-611">LOGBACK-611</a>)
</p>
<p>It is now possible to configure the character encoding used by
<code>SyslogAppender</code> to encode messages using the
<code>setCharset()</code> method. This fixes <a
href="http://jira.qos.ch/browse/LOGBACK-732">LOGBACK-732</a>
</p>
<h3>2nd of April, 2014 - Release of version 1.1.2</h3>
<p>Create an abstract method, createOutputStream, as an extension point
for subclasses of SyslogBaseAppender to create their own OutputStream.
<a href="http://jira.qos.ch/browse/LOGBACK-890">LOGBACK-890</a>
</p>
<p>Removed deprecated constructors in <code>SocketAppender</code>
and related classes.</p>
<p>Fixed incorrect date format in <code>SyslogAppender</code>.
(<a href="http://jira.qos.ch/browse/LOGBACK-936">LOGBACK-936</a>)
</p>
<p>Fixed <code>NullPointerException</code> when substituting blank variables
(<a href="http://jira.qos.ch/browse/LOGBACK-959">LOGBACK-959</a>)</p>
<p>Fixed <code>NullPointerException</code> that occurs when stopping a
<code>SyslogAppender</code> that did not properly initialize, e.g.,
due to a hostname resolution failure.
(<a href="http://jira.qos.ch/browse/LOGBACK-960">LOGBACK-960</a>)
</p>
<p>Use fair locking in <code>OutputStreamAppender</code>. Patch provided by
Sergey Bykov.
(<a href="http://jira.qos.ch/browse/LOGBACK-268">LOGBACK-268</a>)
</p>
<p>In case of missing included files, IncludeAction no longer
prints a stack trace but prints a warning instead. (<a
href="http://jira.qos.ch/browse/LOGBACK-954">LOGBACK-954</a>)</p>
<p>Fixed character escaping in XMLLayout
(<a href="http://jira.qos.ch/browse/LOGBACK-728">LOGBACK-728</a>)
and HTMLLayout
(<a href="http://jira.qos.ch/browse/LOGBACK-440">LOGBACK-440</a>).</p>
<hr width="80%" align="center" />
<h3>5th of February, 2014 - Release of version 1.1.1</h3>
<p>Logback now supports an unlimited level of <a
href="manual/configuration.html#variableSubstitution">variable</a>
resolution graphs rather than being limited to one level deep
resolution. This enhancement was requested by Anton Wiedermann in
<a href="http://jira.qos.ch/browse/LOGBACK-943">LOGBACK-943</a>
with Eric Dahl providing the relevant pull request.
</p>
<p>Fixed <a
href="http://jira.qos.ch/browse/LOGBACK-942">LOGBACK-942</a> which
was causing <code>SocketAppender</code> to drop events. Eric Dahl
provided the relevant pull request.
</p>
<hr width="80%" align="center" />
<h3>January 28th, 2014 - Release of version 1.1.0</h3>
<p>Previously, logback silently ignored configuration files that did
not have the ".xml" or ".groovy" file extension. Now, a <code>LogbackException</code>
is thrown to flag this error.
</p>
<p>Groovy configuration now supports <code>appenderRef</code>, which
allows the use of <code>AsyncAppender</code> in Groovy.
(<a href="http://jira.qos.ch/browse/LOGBACK-269">LOGBACK-269</a>)
</p>
<p><code>SizeAndTimeBasedFNATP</code> now supports a protected function
<code>#createArchiveRemover</code> that allows subclasses to specify
a custom archive remover used in <code>RollingFileAppender</code>. The
default archive remover is <code>SizeAndTimeBasedArchiveRemover</code>.
</p>
<p><code>PackagingDataCalculator</code> now catches and ignores
<code>UnsupportedOperationException</code> so that it can determine
whether the JVM supports <code>Reflection#getCallerClass()</code>
without printing that exception's stack trace. This only affects
Java 7u40+, which removed support for <code>Reflection#getCallerClass()</code>.
(<a href="http://jira.qos.ch/browse/LOGBACK-885">LOGBACK-885</a>)
</p>
<p>To facilitate debugging, <code>SimpleSocketServer</code> now names
its threads: "<b>Logback SimpleSocketServer (port <i>PORTNUM</i>)</b>".
<code>SocketNode</code> client threads are named:
"<b>Logback SocketNode (client: <i>IPADDR</i>)</b>".
</p>
<p>Fixed silently lost messages from <code>SyslogAppender</code>
when they exceeded the system datagram size limit. The default max
message size was hard coded to 65KB but now matches the system limit
(as read from
<a href="http://docs.oracle.com/javase/6/docs/api/java/net/DatagramSocket.html#getSendBufferSize()">
<code>DatagramSocket#getSendBufferSize()</code></a>) unless a
nonzero limit is specified via <code>SyslogAppender#setMaxMessageSize()</code>.
(<a href="http://jira.qos.ch/browse/LOGBACK-926">LOGBACK-926</a>)
</p>
<p>Fixed various documentation typos, including
<a href="http://jira.qos.ch/browse/LOGBACK-466">LOGBACK-466</a>,
<a href="http://jira.qos.ch/browse/LOGBACK-768">LOGBACK-768</a>,
<a href="http://jira.qos.ch/browse/LOGBACK-904">LOGBACK-904</a>,
<a href="http://jira.qos.ch/browse/LOGBACK-921">LOGBACK-921</a>,
and
<a href="http://jira.qos.ch/browse/LOGBACK-927">LOGBACK-927</a>.
</p>
<p><code>ContextBase.setStatusManager</code> now correctly validates
the given status manager.
(<a href="http://jira.qos.ch/browse/LOGBACK-912">LOGBACK-912</a>)
</p>
<p>The <code>SocketNode</code> creates an <code>ObjectInputStream</code>
using the socket's input stream, which blocks waiting for the
stream header. This wait has been moved from the constructor to
<code>SocketNode.run()</code> so that the node can be created without
blocking.
(<a href="http://jira.qos.ch/browse/LOGBACK-350">LOGBACK-350</a>)
</p>
<p>Fixed <code>SecurityException</code> during initialization
in Google AppEngine.
(<a href="http://jira.qos.ch/browse/LOGBACK-760">LOGBACK-760</a>)
</p>
<p>The <code><include></code> element now allows optional
resources (previously, only optional files).
(<a href="http://jira.qos.ch/browse/LOGBACK-644">LOGBACK-928</a>)
</p>
<p>Added new layout conversion word (<b>%D</b> or <b>%elapsedTime</b>),
which gets the time taken to serve the request. This applies
only to Jetty and Tomcat logs via logback-access.
(<a href="http://jira.qos.ch/browse/LOGBACK-320">LOGBACK-320</a>)
</p>
<p>Fixed SMTP error when the subject line contained multiple
new-lines.
(<a href="http://jira.qos.ch/browse/LOGBACK-865">LOGBACK-865</a>)
</p>
<p>Fixed unnecessary re-initialization of the servlet's
<code>LoggerContext</code> while attempting to destroy it.
</p>
<p>Added the following syslog facilities to <code>SyslogStartConverter</code>:
NTP, AUDIT, ALERT, CLOCK
(<a href="http://jira.qos.ch/browse/LOGBACK-754">LOGBACK-754</a>)
</p>
<p>Fixed <code>NullPointerException</code> when setting a JUL
logger's level to null, which should have reset the logger level
to the parent's effective level.
(<a href="http://jira.qos.ch/browse/LOGBACK-906">LOGBACK-906</a>)
</p>
<p>Added support to get suppressed exceptions. This is currently
only implemented for <code>RootCauseFirstThrowableProxyConverter</code>
and <code>ThrowableProxyConverter</code>.
(<a href="http://jira.qos.ch/browse/LOGBACK-516">LOGBACK-516</a>)
</p>
<p>Fixed problem of Janino classes not found in some environments
(axis2, GWT, etc.).
(<a href="http://jira.qos.ch/browse/LOGBACK-832">LOGBACK-832</a>)
</p>
<p>Fixed various unit tests, including modifications for consistent
results in Jenkins.
(<a href="http://jira.qos.ch/browse/LOGBACK-842">LOGBACK-842</a>)
</p>
<p>Allow Gaffer to read the <code>logback.debug</code> system
property to enable verbose output during Groovy-based configuration.
Also added debug statements to Gaffer.
</p>
<p>Fixed <code>IllegalArgumentException</code> when missing periods
and dollar signs in the logger name.
(<a href="http://jira.qos.ch/browse/LOGBACK-384">LOGBACK-384</a>)
</p>
<p>Fixed <code>NullPointerException</code> during JNDI lookup.</p>
<p>Fixed dangling data source connections from <code>DBAppender</code>
that caused <i>"maximum open cursors exceeded"</i>.</p>
<p>Fixed incorrect stack trace depth when specifying <code>%throwable</code>
with argument.
(<a href="http://jira.qos.ch/browse/LOGBACK-160">LOGBACK-160</a>)
</p>
<p>Fixed MySQL setup script to use lower-case table name to
match the references in the file. This had caused an error
on systems where case sensitivity matters.</p>
<p>Fixed <code>NullPointerException</code> when getting code source in
<code>PackagingDataCalculator</code>.</p>
<p>The search path for <code>logback-access.xml</code> is now
<code>${catalina.base}</code> and then <code>${catalina.home}</code>
if not found.
(<a href="http://jira.qos.ch/browse/LOGBACK-844">LOGBACK-844</a>)
</p>
<p>The <code>LoggingEvent</code> constructor delays message
formatting so that it can be computed lazily by the
<code>getFormattedMessage</code> method. This fixes <a
href="http://jira.qos.ch/browse/LOGBACK-873">LOGBACK-873</a> and
re-fixes <a
href="http://jira.qos.ch/browse/LOGBACK-495">LOGBACK-495</a>.
</p>
<p><code>PackagingDataCalculator</code> now checks for the case
where the caller has no protection domain. This fixes <a
href="http://jira.qos.ch/browse/LOGBACK-617">LOGBACK-617</a>
reported by Yuri de Wit. The relevant fix was provided by Mikhail
Mazursky.
</p>
<hr width="80%" align="center" />
<h3>May 10th, 2013 - Release of version 1.0.13</h3>
<p>In logback-access MANIFEST file, imports of Jetty and Tomcat
are now optional. This fixes <a
href="http://jira.qos.ch/browse/LOGBACK-300">LOGBACK-300</a>
reported by Christian Brensing who also provided the appropriate
pull request.