comparison website/src/goodjava.html.luan @ 1827:50e570b598b2

security
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 15 Sep 2024 10:36:46 -0600
parents 96dbbdf1e368
children
comparison
equal deleted inserted replaced
1826:3cd1d267508c 1827:50e570b598b2
22 } 22 }
23 logger = { 23 logger = {
24 title = "goodjava.logger" 24 title = "goodjava.logger"
25 content = function() 25 content = function()
26 %> 26 %>
27 <p>This includes <a href="https://hg.reactionary.software/repo/luan/file/default/src/goodjava/logger">goodjava.logger</a> which replaces <a href="https://logging.apache.org/log4j/1.2/">log4j</a>, and <a href="https://hg.reactionary.software/repo/luan/file/default/src/goodjava/logging">goodjava.logging</a> which replaces <a href="http://www.slf4j.org/">slf4j</a>. You can see <a href="https://hg.reactionary.software/repo/luan/file/default/src/goodjava/logger/examples">some examples</a> of how to use my logger. Configuration is in Java, where it should be.</p> 27 <p>This includes <a href="https://hg.reactionary.software/repo/luan/file/default/src/goodjava/logger">goodjava.logger</a> which replaces <a href="https://logging.apache.org/log4j/1.2/">log4j</a>, and <a href="https://hg.reactionary.software/repo/luan/file/default/src/goodjava/logging">goodjava.logging</a> which replaces <a href="https://www.slf4j.org/">slf4j</a>. You can see <a href="https://hg.reactionary.software/repo/luan/file/default/src/goodjava/logger/examples">some examples</a> of how to use my logger. Configuration is in Java, where it should be.</p>
28 28
29 <p>slf4j is a typical modern mess. Just look at <a href="http://www.slf4j.org/apidocs/org/slf4j/Logger.html">slf4j's logger</a> and compare to the interface of <a href="https://hg.reactionary.software/repo/luan/file/default/src/goodjava/logging/Logger.java">my logger</a>. log4j isn't horrible but has significant problems. This project was abandoned by its author so that he could create a horrible depraved logger called <a href="http://logback.qos.ch/">Logback</a> to fit with his depraved culture. log4j's biggest problem is that it doesn't handle logging separation properly. Its <a href="https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/spi/RepositorySelector.html">RepositorySelector</a> is a hack. goodjava.logger's <a href="https://hg.reactionary.software/repo/luan/file/default/src/goodjava/logger/ThreadLocalAppender.java">ThreadLocalAppender</a> solves the problem properly.</p> 29 <p>slf4j is a typical modern mess. Just look at <a href="https://www.slf4j.org/apidocs/org/slf4j/Logger.html">slf4j's logger</a> and compare to the interface of <a href="https://hg.reactionary.software/repo/luan/file/default/src/goodjava/logging/Logger.java">my logger</a>. log4j isn't horrible but has significant problems. This project was abandoned by its author so that he could create a horrible depraved logger called <a href="https://logback.qos.ch/">Logback</a> to fit with his depraved culture. log4j's biggest problem is that it doesn't handle logging separation properly. Its <a href="https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/spi/RepositorySelector.html">RepositorySelector</a> is a hack. goodjava.logger's <a href="https://hg.reactionary.software/repo/luan/file/default/src/goodjava/logger/ThreadLocalAppender.java">ThreadLocalAppender</a> solves the problem properly.</p>
30 30
31 <p>I implemented full bridging with slf4j, both slf4j to goodjava.logging and goodjava.logging to slf4j. This way my code is completely compatible with depraved modern code.</p> 31 <p>I implemented full bridging with slf4j, both slf4j to goodjava.logging and goodjava.logging to slf4j. This way my code is completely compatible with depraved modern code.</p>
32 <% 32 <%
33 end 33 end
34 } 34 }