Skip to content

Commit e3f9a15

Browse files
committed
rack logger base - support for (optional) level property + formatting flag
1 parent 201af64 commit e3f9a15

File tree

12 files changed

+118
-37
lines changed

12 files changed

+118
-37
lines changed

src/main/java/org/jruby/rack/RackLogger.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ enum Level {
4747

4848
abstract class Base implements RackLogger {
4949

50+
public abstract Level getLevel() ;
51+
52+
public void setLevel(Level level) { /* noop */ }
53+
54+
public boolean isFormatting() { return false; }
55+
56+
public void setFormatting(boolean flag) { /* noop */ }
57+
5058
@Override
5159
public void log(String message) {
5260
log(Level.INFO, message);

src/main/java/org/jruby/rack/embed/Context.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ public boolean isEnabled(Level level) {
105105
return this.level.ordinal() <= level.ordinal();
106106
}
107107

108+
109+
108110
private class DefaultLogger extends RackLogger.Base {
109111

110112
@Override
@@ -127,6 +129,9 @@ public void log(Level level, String message, Throwable ex) {
127129
@Override
128130
public boolean isEnabled(Level level) { return true; }
129131

132+
@Override
133+
public Level getLevel() { return null; /* unknown */ }
134+
130135
}
131136

132137
}

src/main/java/org/jruby/rack/logging/CommonsLoggingLogger.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,14 @@ public void log(Level level, String message, Throwable ex) {
6969
}
7070
}
7171

72+
@Override
73+
public Level getLevel() {
74+
if ( logger.isDebugEnabled() ) return Level.DEBUG;
75+
if ( logger.isInfoEnabled() ) return Level.INFO ;
76+
if ( logger.isWarnEnabled() ) return Level.WARN ;
77+
if ( logger.isErrorEnabled() ) return Level.ERROR;
78+
if ( logger.isFatalEnabled() ) return Level.FATAL;
79+
return null;
80+
}
81+
7282
}

src/main/java/org/jruby/rack/logging/JulLogger.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,14 @@ private static java.util.logging.Level mapLevel(
8686
return defaultLevel;
8787
}
8888

89+
@Override
90+
public Level getLevel() {
91+
if ( logger.isLoggable(java.util.logging.Level.FINE) ) return Level.DEBUG;
92+
if ( logger.isLoggable(java.util.logging.Level.INFO) ) return Level.INFO ;
93+
if ( logger.isLoggable(java.util.logging.Level.WARNING) ) return Level.WARN ;
94+
if ( logger.isLoggable(java.util.logging.Level.SEVERE) ) return Level.ERROR;
95+
if ( logger.isLoggable(java.util.logging.Level.SEVERE) ) return Level.FATAL;
96+
return null;
97+
}
98+
8999
}

src/main/java/org/jruby/rack/logging/Log4jLogger.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,14 @@ public void log(Level level, String message, Throwable ex) {
7474
}
7575
}
7676

77+
@Override
78+
public Level getLevel() {
79+
if ( logger.isEnabledFor(org.apache.log4j.Level.DEBUG) ) return Level.DEBUG;
80+
if ( logger.isEnabledFor(org.apache.log4j.Level.INFO) ) return Level.INFO ;
81+
if ( logger.isEnabledFor(org.apache.log4j.Level.WARN) ) return Level.WARN ;
82+
if ( logger.isEnabledFor(org.apache.log4j.Level.ERROR) ) return Level.ERROR;
83+
if ( logger.isEnabledFor(org.apache.log4j.Level.FATAL) ) return Level.FATAL;
84+
return null;
85+
}
86+
7787
}

src/main/java/org/jruby/rack/logging/OutputStreamLogger.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,25 @@ public class OutputStreamLogger extends RackLogger.Base {
3636

3737
private final PrintStream out;
3838
private Level level;
39+
private boolean formatting = true;
3940

40-
public OutputStreamLogger(OutputStream out) {
41+
public OutputStreamLogger(final OutputStream out) {
4142
this(new PrintStream(out));
4243
}
4344

44-
public OutputStreamLogger(PrintStream out) {
45+
public OutputStreamLogger(final PrintStream out) {
4546
if ( out == null ) {
4647
throw new IllegalArgumentException("no stream");
4748
}
4849
this.out = out;
4950
}
5051

52+
@Override
5153
public Level getLevel() {
5254
return level;
5355
}
5456

57+
@Override
5558
public void setLevel(Level level) {
5659
this.level = level;
5760
}
@@ -69,7 +72,7 @@ public void log(String message, Throwable ex) {
6972
@Override
7073
public void log(Level level, String message) {
7174
if ( ! isEnabled(level) ) return;
72-
out.print(level); out.print(": ");
75+
printLevel(this, level, out);
7376
doLog(message);
7477
}
7578

@@ -81,7 +84,7 @@ private void doLog(final CharSequence message) {
8184
@Override
8285
public void log(Level level, String message, Throwable ex) {
8386
if ( ! isEnabled(level) ) return;
84-
out.print(level); out.print(": ");
87+
printLevel(this, level, out);
8588
doLog(message, ex);
8689
}
8790

@@ -97,6 +100,18 @@ public boolean isEnabled(final Level level) {
97100
return this.level.ordinal() <= level.ordinal();
98101
}
99102

103+
@Override
104+
public boolean isFormatting() { return this.formatting; }
105+
106+
@Override
107+
public void setFormatting(boolean formatting) { this.formatting = formatting; }
108+
109+
public static void printLevel(final RackLogger.Base logger, final Level level, final PrintStream out) {
110+
if ( logger.isFormatting() ) {
111+
out.print(level); out.print(": ");
112+
}
113+
}
114+
100115
public static void printMessage(final PrintStream out, final CharSequence message) {
101116
if ( message.charAt(message.length() - 1) == '\n' ) {
102117
out.print(message);

src/main/java/org/jruby/rack/logging/ServletContextLogger.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,6 @@ public ServletContextLogger(ServletContext context) {
2020
this.context = context;
2121
}
2222

23-
//public Level getLevel() {
24-
// return level;
25-
//}
26-
27-
//public void setLevel(Level level) {
28-
// this.level = level;
29-
//}
30-
3123
@Override
3224
public void log(String message) {
3325
context.log(message);
@@ -55,4 +47,9 @@ public boolean isEnabled(Level level) {
5547
//return this.level.ordinal() <= level.ordinal();
5648
}
5749

50+
@Override
51+
public Level getLevel() {
52+
return null; // unknown
53+
}
54+
5855
}

src/main/java/org/jruby/rack/logging/Slf4jLogger.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,14 @@ public void log(Level level, String message, Throwable ex) {
7373
}
7474
}
7575

76+
@Override
77+
public Level getLevel() {
78+
if ( logger.isDebugEnabled() ) return Level.DEBUG;
79+
if ( logger.isInfoEnabled() ) return Level.INFO ;
80+
if ( logger.isWarnEnabled() ) return Level.WARN ;
81+
if ( logger.isErrorEnabled() ) return Level.ERROR;
82+
if ( logger.isErrorEnabled() ) return Level.FATAL;
83+
return null;
84+
}
85+
7686
}

src/spec/java/org/jruby/rack/logging/RaiseLogger.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,4 +110,7 @@ public void log(Level level, String message, Throwable ex) {
110110
}
111111
}
112112

113+
@Override
114+
public Level getLevel() { return null; }
115+
113116
}

0 commit comments

Comments
 (0)