| package org.apache.log4j; |
| import java.io.IOException; |
| import java.io.Writer; |
| import java.io.OutputStream; |
| import java.io.OutputStreamWriter; |
| import org.apache.log4j.spi.ErrorHandler; |
| import org.apache.log4j.spi.LoggingEvent; |
| import org.apache.log4j.helpers.QuietWriter; |
| import org.apache.log4j.helpers.LogLog; |
| public |
| class WriterAppender |
| extends AppenderSkeleton |
| { |
| protected |
| boolean immediateFlush |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.immediateFlush : Interval 0 : true : true |
| =true |
| ; |
| protected |
| String encoding |
| //QC Intervals : (String) org.apache.log4j.WriterAppender.encoding : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| ; |
| protected |
| QuietWriter qw |
| //QC Intervals :(QuietWriter) org.apache.log4j.WriterAppender.qw : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| ; |
| public |
| WriterAppender |
| ( |
| ) |
| { |
| } |
| public |
| WriterAppender |
| ( |
| Layout layout |
| , |
| OutputStream os |
| ) |
| //QC Intervals : (Layout) org.apache.log4j.WriterAppender.WriterAppender.layout : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals :(OutputStream) org.apache.log4j.WriterAppender.WriterAppender.os : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| { |
| this(layout,new OutputStreamWriter(os)); |
| //type of the function/method : WriterAppender |
| //QC-CWE252 or QCerrorRTF return type of function is not tested (see http://cwe.mitre.org/data/definitions/252.html) |
| } |
| public |
| WriterAppender |
| ( |
| Layout layout |
| , |
| Writer writer |
| ) |
| //QC Intervals : (Layout) org.apache.log4j.WriterAppender.WriterAppender.layout : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //QC Intervals : (Writer) org.apache.log4j.WriterAppender.WriterAppender.writer : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| { |
| this.layout=layout; |
| //QC Intervals : (void) java.awt.Component.layout |
| : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //assignation |
| this.setWriter(writer); |
| //type of the function/method : void;Writer |
| //QC-CWE252 or QCerrorRTF return type of function is not tested (see http://cwe.mitre.org/data/definitions/252.html) |
| } |
| public |
| void setImmediateFlush |
| ( |
| boolean value |
| ) |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.setImmediateFlush.value: Interval 0 : false : true |
| { |
| immediateFlush=value; |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.immediateFlush |
| : Interval 0 : false : true |
| //assignation |
| } |
| public |
| boolean getImmediateFlush |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.getImmediateFlush : Interval 0 : false : true |
| ( |
| ) |
| { |
| return immediateFlush; |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.getImmediateFlush.return: Interval 0 : false : true |
| } |
| public |
| void activateOptions |
| ( |
| ) |
| { |
| } |
| public |
| void append |
| ( |
| LoggingEvent event |
| ) |
| //QC Intervals :(LoggingEvent) org.apache.log4j.WriterAppender.append.event : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| { |
| if (!checkEntryConditions()) |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.checkEntryConditions |
| : Interval 0 : false : false |
| { |
| return ; |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.append.append.return : Interval 0 : true : true |
| } |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.checkEntryConditions |
| : Interval 0 : true : true |
| subAppend(event); |
| //QC Intervals :(LoggingEvent) org.apache.log4j.WriterAppender.subAppend |
| 1 : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //type of the function/method : void |
| } |
| protected |
| boolean checkEntryConditions |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.checkEntryConditions : Interval 0 : false : true |
| ( |
| ) |
| { |
| if (this.closed) |
| //QC Intervals : (boolean) org.apache.log4j.AppenderSkeleton.closed |
| : Interval 0 : true : true |
| { |
| LogLog.warn("Not allowed to write to a closed appender . "); |
| //QC Intervals : (String) org.apache.log4j.helpers.LogLog.warn |
| 1 : Interval 0 : Not allowed to write to a closed appender . : Not allowed to write to a closed appender . |
| //type of the function/method : void |
| return false; |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.checkEntryConditions.return: Interval 0 : false : false |
| } |
| //QC Intervals : (boolean) org.apache.log4j.AppenderSkeleton.closed |
| : Interval 0 : false : false |
| if (this.qw==null ) |
| //QC Intervals :(QuietWriter) org.apache.log4j.WriterAppender |
| : Interval 0 : null : null |
| { |
| errorHandler.error("No output stream or file set for the appender named [ "+name+" ] . "); |
| //QC Intervals :(SAXParseException) org.xml.sax.ErrorHandler.error |
| 1 : Interval 0 : No output stream or file set for the appender named . : No output stream or file set for the appender named . |
| //type of the function/method : void |
| return false; |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.checkEntryConditions.return: Interval 0 : false : false |
| } |
| //QC Intervals :(QuietWriter) org.apache.log4j.WriterAppender |
| : Interval 0 : new : new |
| if (this.layout==null ) |
| //QC Intervals : (void) java.awt.Component.layout |
| : Interval 0 : null : null |
| { |
| errorHandler.error("No layout set for the appender named [ "+name+" ] . "); |
| //QC Intervals :(SAXParseException) org.xml.sax.ErrorHandler.error |
| 1 : Interval 0 : No layout set for the appender named . : No layout set for the appender named . |
| //type of the function/method : void |
| return false; |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.checkEntryConditions.return: Interval 0 : false : false |
| } |
| //QC Intervals : (void) java.awt.Component.layout |
| : Interval 0 : new : new |
| return true; |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.checkEntryConditions.return: Interval 0 : true : true |
| } |
| public synchronized |
| void close |
| ( |
| ) |
| { |
| if (this.closed) |
| //QC Intervals : (boolean) org.apache.log4j.AppenderSkeleton.closed |
| : Interval 0 : true : true |
| return ; |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.close.close.return : Interval 0 : true : true |
| //QC Intervals : (boolean) org.apache.log4j.AppenderSkeleton.closed |
| : Interval 0 : false : false |
| this.closed=true; |
| //QC Intervals : (boolean) org.apache.log4j.AppenderSkeleton.closed |
| : Interval 0 : true : true |
| //assignation |
| writeFooter(); |
| //type of the function/method : void |
| reset(); |
| //type of the function/method : void |
| } |
| protected |
| void closeWriter |
| ( |
| ) |
| { |
| if (qw!=null ) |
| //QC Intervals :(QuietWriter) org.apache.log4j.WriterAppender.closeWriter |
| : Interval 0 : new : new |
| { |
| try |
| { |
| qw.close(); |
| //type of the function/method : void |
| } |
| catch ( |
| IOException e |
| ) |
| //QC Intervals :(IOException) org.apache.log4j.WriterAppender.closeWriter.e : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| { |
| LogLog.error("Could not close "+qw,e); |
| //QC Intervals : (String) org.apache.log4j.helpers.LogLog.error |
| 1 : Interval 0 : 0 : 0 |
| //QC Intervals :(Throwable) org.apache.log4j.helpers.LogLog.error |
| 2 : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //type of the function/method : void |
| } |
| } |
| } |
| protected |
| OutputStreamWriter createWriter |
| //QC Intervals :(OutputStreamWriter) org.apache.log4j.WriterAppender.createWriter : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| ( |
| OutputStream os |
| ) |
| //QC Intervals :(OutputStream) org.apache.log4j.WriterAppender.createWriter.os : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| { |
| OutputStreamWriter retval=null ; |
| //QC Intervals :(OutputStreamWriter) org.apache.log4j.WriterAppender.createWriter.retval : Interval 0 : null : null |
| String enc=getEncoding(); |
| //QC Intervals : (String) org.apache.log4j.WriterAppender.createWriter.enc : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| if (enc!=null ) |
| //QC Intervals : (String) org.apache.log4j.WriterAppender.createWriter.enc : Interval 0 : new : new |
| { |
| try |
| { |
| retval=(new OutputStreamWriter(os,enc)); |
| //QC Intervals :(OutputStreamWriter) org.apache.log4j.WriterAppender.createWriter.retval : Interval 0 : new : new |
| //assignation |
| } |
| catch ( |
| IOException e |
| ) |
| //QC Intervals :(IOException) org.apache.log4j.WriterAppender.createWriter.e : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| { |
| LogLog.warn("Error initializing output writer . "); |
| //QC Intervals : (String) org.apache.log4j.helpers.LogLog.warn |
| 1 : Interval 0 : Error initializing output writer . : Error initializing output writer . |
| //type of the function/method : void |
| LogLog.warn("Unsupported encoding ? "); |
| //type of the function/method : void |
| } |
| } |
| if (retval==null ) |
| //QC Intervals :(OutputStreamWriter) org.apache.log4j.WriterAppender.createWriter.retval : Interval 0 : null : null |
| { |
| retval=(new OutputStreamWriter(os)); |
| //QC Intervals :(OutputStreamWriter) org.apache.log4j.WriterAppender.createWriter.retval : Interval 0 : new : new |
| //assignation |
| } |
| return retval; |
| //QC Intervals :(OutputStreamWriter) org.apache.log4j.WriterAppender.createWriter.return : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| } |
| public |
| String getEncoding |
| //QC Intervals : (String) org.apache.log4j.WriterAppender.getEncoding : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| ( |
| ) |
| { |
| return encoding; |
| //QC Intervals : (String) org.apache.log4j.WriterAppender.getEncoding.return : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| } |
| public |
| void setEncoding |
| ( |
| String value |
| ) |
| //QC Intervals : (String) org.apache.log4j.WriterAppender.setEncoding.value : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| { |
| encoding=value; |
| //QC Intervals : (String) org.apache.log4j.WriterAppender.encoding |
| : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| //assignation |
| } |
| public synchronized |
| void setErrorHandler |
| ( |
| ErrorHandler eh |
| ) |
| //QC Intervals :(ErrorHandler) org.apache.log4j.WriterAppender.setErrorHandler.eh : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| { |
| if (eh==null ) |
| //QC Intervals :(ErrorHandler) org.apache.log4j.WriterAppender.setErrorHandler.eh : Interval 0 : null : null |
| { |
| LogLog.warn("You have tried to set a null error - handler . "); |
| //QC Intervals : (String) org.apache.log4j.helpers.LogLog.warn |
| 1 : Interval 0 : You have tried to set a null error - handler . : You have tried to set a null error - handler . |
| //type of the function/method : void |
| } |
| else |
| //QC Intervals :(ErrorHandler) org.apache.log4j.WriterAppender.setErrorHandler.eh : Interval 0 : new : new |
| { |
| this.errorHandler=eh; |
| //QC Intervals :(ErrorHandler) org.apache.log4j.WriterAppender |
| : Interval 0 : new : new |
| //assignation |
| if (this.qw!=null ) |
| //QC Intervals :(QuietWriter) org.apache.log4j.WriterAppender |
| : Interval 0 : new : new |
| { |
| this.qw.setErrorHandler(eh); |
| //type of the function/method : void;ErrorHandler |
| //QC-CWE252 or QCerrorRTF return type of function is not tested (see http://cwe.mitre.org/data/definitions/252.html) |
| } |
| } |
| } |
| public synchronized |
| void setWriter |
| ( |
| Writer writer |
| ) |
| //QC Intervals : (Writer) org.apache.log4j.WriterAppender.setWriter.writer : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| { |
| reset(); |
| //type of the function/method : void |
| this.qw=(new QuietWriter(writer,errorHandler)); |
| //QC Intervals :(QuietWriter) org.apache.log4j.WriterAppender |
| : Interval 0 : new : new |
| //assignation |
| writeHeader(); |
| //type of the function/method : void |
| } |
| protected |
| void subAppend |
| ( |
| LoggingEvent event |
| ) |
| //QC Intervals :(LoggingEvent) org.apache.log4j.WriterAppender.subAppend.event : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| { |
| this.qw.write(this.layout.format(event)); |
| //type of the function/method : void;String |
| //QC-CWE252 or QCerrorRTF return type of function is not tested (see http://cwe.mitre.org/data/definitions/252.html) |
| if (layout.ignoresThrowable()) |
| //QC-CWE570 and QCerrorCNT Condition NEVER true : no interval for variable (void)java.awt.Component.layout |
| { |
| String[] s=event.getThrowableStrRep(); |
| //QC-CWE476 or QCerrorNPE null pointer reference on event (see http://cwe.mitre.org/data/definitions/476.html) |
| //QC Intervals :(String[]) org.apache.log4j.WriterAppender.subAppend.s : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| if (s!=null ) |
| //QC Intervals :(String[]) org.apache.log4j.WriterAppender.subAppend.s : Interval 0 : new : new |
| { |
| int len=s.length; |
| //QC Intervals : (int) org.apache.log4j.WriterAppender.subAppend.len : Interval 0 : -2147483647 : 2147483647 |
| for ( |
| int i |
| //QC Intervals : (int) org.apache.log4j.WriterAppender.subAppend.i : Interval 0 : 0 : 0 |
| =0; |
| i<len; |
| i++ |
| ) |
| { |
| this.qw.write(s[i] ); |
| //type of the function/method : void;String |
| //QC-CWE252 or QCerrorRTF return type of function is not tested (see http://cwe.mitre.org/data/definitions/252.html) |
| this.qw.write(Layout.LINE_SEP); |
| //type of the function/method : void;String |
| //QC-CWE252 or QCerrorRTF return type of function is not tested (see http://cwe.mitre.org/data/definitions/252.html) |
| } |
| } |
| } |
| if (this.immediateFlush) |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.immediateFlush |
| : Interval 0 : true : true |
| { |
| this.qw.flush(); |
| //type of the function/method : void |
| } |
| } |
| public |
| boolean requiresLayout |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.requiresLayout : Interval 0 : false : true |
| ( |
| ) |
| { |
| return true; |
| //QC Intervals : (boolean) org.apache.log4j.WriterAppender.requiresLayout.return : Interval 0 : true : true |
| } |
| protected |
| void reset |
| ( |
| ) |
| { |
| closeWriter(); |
| //type of the function/method : void |
| this.qw=null ; |
| //QC Intervals :(QuietWriter) org.apache.log4j.WriterAppender |
| : Interval 0 : null : null |
| //assignation |
| } |
| protected |
| void writeFooter |
| ( |
| ) |
| { |
| if (layout!=null ) |
| //QC Intervals : (void) java.awt.Component.layout |
| : Interval 0 : new : new |
| { |
| String f=layout.getFooter(); |
| //QC Intervals : (String) org.apache.log4j.WriterAppender.writeFooter.f : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| if ((f!=null )&&(this.qw!=null )) |
| //QC Intervals : (String) org.apache.log4j.WriterAppender.writeFooter.f : Interval 0 : new : new |
| //QC Intervals :(QuietWriter) org.apache.log4j.WriterAppender |
| : Interval 0 : new : new |
| { |
| this.qw.write(f); |
| //type of the function/method : void;String |
| //QC-CWE252 or QCerrorRTF return type of function is not tested (see http://cwe.mitre.org/data/definitions/252.html) |
| this.qw.flush(); |
| //type of the function/method : void |
| } |
| } |
| } |
| protected |
| void writeHeader |
| ( |
| ) |
| { |
| if (layout!=null ) |
| //QC Intervals : (void) java.awt.Component.layout |
| : Interval 0 : new : new |
| { |
| String h=layout.getHeader(); |
| //QC Intervals : (String) org.apache.log4j.WriterAppender.writeHeader.h : Interval 0 : null : null |
| //QC : Interval 1 : new : new |
| if ((h!=null )&&(this.qw!=null )) |
| //QC Intervals : (String) org.apache.log4j.WriterAppender.writeHeader.h : Interval 0 : new : new |
| //QC Intervals :(QuietWriter) org.apache.log4j.WriterAppender |
| : Interval 0 : new : new |
| this.qw.write(h); |
| //type of the function/method : void;String |
| //QC-CWE252 or QCerrorRTF return type of function is not tested (see http://cwe.mitre.org/data/definitions/252.html) |
| } |
| } |
| } |