@@ -28,8 +28,8 @@ enum class Severity(val sev: Int) {
2828 ErrorGlobal (8 )
2929}
3030
31- open class Logger (val logCounter : LogCounter , open val tw : TrapWriter ) {
32- private fun timestamp (): String {
31+ open class LoggerBase (val logCounter : LogCounter ) {
32+ protected fun timestamp (): String {
3333 return " [${SimpleDateFormat (" yyyy-MM-dd HH:mm:ss" ).format(Date ())} K]"
3434 }
3535
@@ -47,12 +47,7 @@ open class Logger(val logCounter: LogCounter, open val tw: TrapWriter) {
4747 return null
4848 }
4949
50- fun flush () {
51- tw.flush()
52- System .out .flush()
53- }
54-
55- fun diagnostic (severity : Severity , msg : String , extraInfo : String? , locationString : String? = null, mkLocationId : () -> Label <DbLocation > = { tw.unknownLocation }) {
50+ fun diagnostic (tw : TrapWriter , severity : Severity , msg : String , extraInfo : String? , locationString : String? = null, mkLocationId : () -> Label <DbLocation > = { tw.unknownLocation }) {
5651 val diagnosticLoc = getDiagnosticLocation()
5752 val diagnosticLocStr = if (diagnosticLoc == null ) " <unknown location>" else diagnosticLoc
5853 val extraInfoStr = if (extraInfo == null ) " " else (extraInfo + " \n " )
@@ -78,6 +73,34 @@ open class Logger(val logCounter: LogCounter, open val tw: TrapWriter) {
7873 print (" $ts Diagnostic($diagnosticLocStr ): $locStr$fullMsg " )
7974 }
8075
76+ fun warn (tw : TrapWriter , msg : String , extraInfo : String? ) {
77+ diagnostic(tw, Severity .Warn , msg, extraInfo)
78+ }
79+ fun error (tw : TrapWriter , msg : String , extraInfo : String? ) {
80+ diagnostic(tw, Severity .Error , msg, extraInfo)
81+ }
82+ }
83+
84+ open class Logger (logCounter : LogCounter , open val tw : TrapWriter ): LoggerBase(logCounter) {
85+ private fun getDiagnosticLocation (): String? {
86+ val st = Exception ().stackTrace
87+ for (x in st) {
88+ when (x.className) {
89+ " com.github.codeql.Logger" ,
90+ " com.github.codeql.FileLogger" -> {}
91+ else -> {
92+ return x.toString()
93+ }
94+ }
95+ }
96+ return null
97+ }
98+
99+ fun flush () {
100+ tw.flush()
101+ System .out .flush()
102+ }
103+
81104 fun info (msg : String ) {
82105 val fullMsg = " ${timestamp()} $msg "
83106 tw.writeComment(fullMsg)
@@ -98,13 +121,13 @@ open class Logger(val logCounter: LogCounter, open val tw: TrapWriter) {
98121 warn(msg, exn.stackTraceToString())
99122 }
100123 fun warn (msg : String , extraInfo : String? ) {
101- diagnostic( Severity . Warn , msg, extraInfo)
124+ warn(tw , msg, extraInfo)
102125 }
103126 fun warn (msg : String ) {
104127 warn(msg, null )
105128 }
106129 fun error (msg : String , extraInfo : String? ) {
107- diagnostic( Severity . Error , msg, extraInfo)
130+ error(tw , msg, extraInfo)
108131 }
109132 fun error (msg : String ) {
110133 error(msg, null )
@@ -124,19 +147,15 @@ open class Logger(val logCounter: LogCounter, open val tw: TrapWriter) {
124147}
125148
126149class FileLogger (logCounter : LogCounter , override val tw : FileTrapWriter ): Logger(logCounter, tw) {
127- private fun timestamp (): String {
128- return " [${SimpleDateFormat (" yyyy-MM-dd HH:mm:ss" ).format(Date ())} K]"
129- }
130-
131150 fun warnElement (msg : String , element : IrElement ) {
132151 val locationString = tw.getLocationString(element)
133152 val mkLocationId = { tw.getLocation(element) }
134- diagnostic(Severity .Warn , msg, null , locationString, mkLocationId)
153+ diagnostic(tw, Severity .Warn , msg, null , locationString, mkLocationId)
135154 }
136155
137156 fun errorElement (msg : String , element : IrElement ) {
138157 val locationString = tw.getLocationString(element)
139158 val mkLocationId = { tw.getLocation(element) }
140- diagnostic(Severity .Error , msg, null , locationString, mkLocationId)
159+ diagnostic(tw, Severity .Error , msg, null , locationString, mkLocationId)
141160 }
142161}
0 commit comments