• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Conditions Of Use
3  *
4  * This software was developed by employees of the National Institute of
5  * Standards and Technology (NIST), an agency of the Federal Government.
6  * Pursuant to title 15 Untied States Code Section 105, works of NIST
7  * employees are not subject to copyright protection in the United States
8  * and are considered to be in the public domain.  As a result, a formal
9  * license is not needed to use the software.
10  *
11  * This software is provided by NIST as a service and is expressly
12  * provided "AS IS."  NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED
13  * OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF
14  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT
15  * AND DATA ACCURACY.  NIST does not warrant or make any representations
16  * regarding the use of the software or the results thereof, including but
17  * not limited to the correctness, accuracy, reliability or usefulness of
18  * the software.
19  *
20  * Permission to use this software is contingent upon your acceptance
21  * of the terms of this agreement.
22  *
23  */
24 /***************************************************************************
25  * Product of NIST/ITL Advanced Networking Technologies Division (ANTD).    *
26  ***************************************************************************/
27 package gov.nist.core;
28 
29 import java.io.*;
30 import java.util.Properties;
31 
32 // BEGIN ANDROID-added
33 // TODO: this class should be replaced by android logging mechanism.
34 public class LogWriter implements StackLogger {
35     private static final String TAG = "SIP_STACK";
36 
37     private boolean mEnabled = true;
38 
logStackTrace()39     public void logStackTrace() {
40         // TODO
41     }
42 
logStackTrace(int traceLevel)43     public void logStackTrace(int traceLevel) {
44         // TODO
45     }
46 
getLineCount()47     public int getLineCount() {
48         return 0;
49     }
50 
logException(Throwable ex)51     public void logException(Throwable ex) {
52         //Log.e(TAG, "", ex);
53     }
logDebug(String message)54     public void logDebug(String message) {
55         //Log.d(TAG, message);
56     }
logTrace(String message)57     public void logTrace(String message) {
58         //Log.d(TAG, message);
59     }
logFatalError(String message)60     public void logFatalError(String message) {
61         //Log.e(TAG, message);
62     }
logError(String message)63     public void logError(String message) {
64         //Log.e(TAG, message);
65     }
isLoggingEnabled()66     public boolean isLoggingEnabled() {
67         return mEnabled;
68     }
isLoggingEnabled(int logLevel)69     public boolean isLoggingEnabled(int logLevel) {
70         // TODO
71         return mEnabled;
72     }
logError(String message, Exception ex)73     public void logError(String message, Exception ex) {
74         //Log.e(TAG, message, ex);
75     }
logWarning(String string)76     public void logWarning(String string) {
77         //Log.w(TAG, string);
78     }
logInfo(String string)79     public void logInfo(String string) {
80         //Log.i(TAG, string);
81     }
82 
disableLogging()83     public void disableLogging() {
84         mEnabled = false;
85     }
86 
enableLogging()87     public void enableLogging() {
88         mEnabled = true;
89     }
90 
setBuildTimeStamp(String buildTimeStamp)91     public void setBuildTimeStamp(String buildTimeStamp) {
92     }
93 
setStackProperties(Properties stackProperties)94     public void setStackProperties(Properties stackProperties) {
95     }
96 
getLoggerName()97     public String getLoggerName() {
98         return "Android SIP Logger";
99     }
100 }
101 // END android-added
102 
103 // BEGIN android-deleted
104 
105 //import org.apache.log4j.Appender;
106 //import org.apache.log4j.FileAppender;
107 //import org.apache.log4j.Level;
108 //import org.apache.log4j.Logger;
109 //import org.apache.log4j.Priority;
110 //import org.apache.log4j.SimpleLayout;
111 //
112 ///**
113 // * A wrapper around log4j that is used for logging debug and errors. You can
114 // * replace this file if you want to change the way in which messages are logged.
115 // *
116 // * @version 1.2
117 // *
118 // * @author M. Ranganathan <br/>
119 // * @author M.Andrews
120 // * @author Jeroen van Bemmel
121 // * @author Jean Deruelle
122 // *
123 // */
124 //
125 //public class LogWriter implements StackLogger {
126 //
127 //    /**
128 //     * The logger to which we will write our logging output.
129 //     */
130 //    private Logger logger;
131 //
132 //    /**
133 //     * The stack name.
134 //     */
135 //    private String stackName;
136 //
137 //    /**
138 //     * Name of the log file in which the trace is written out (default is
139 //     * /tmp/sipserverlog.txt)
140 //     */
141 //    private String logFileName = null;
142 //
143 //    /**
144 //     * Flag to indicate that logging is enabled.
145 //     */
146 //    private volatile boolean needsLogging = false;
147 //
148 //    private int lineCount;
149 //
150 //    /**
151 //     * trace level
152 //     */
153 //
154 //    protected int traceLevel = TRACE_NONE;
155 //
156 //    private String buildTimeStamp;
157 //
158 //    private Properties configurationProperties;
159 //
160 //    /**
161 //     * log a stack trace. This helps to look at the stack frame.
162 //     */
163 //    public void logStackTrace() {
164 //        this.logStackTrace(TRACE_DEBUG);
165 //
166 //    }
167 //
168 //    public void logStackTrace(int traceLevel) {
169 //        if (needsLogging) {
170 //            StringWriter sw = new StringWriter();
171 //            PrintWriter pw = new PrintWriter(sw);
172 //            StackTraceElement[] ste = new Exception().getStackTrace();
173 //            // Skip the log writer frame and log all the other stack frames.
174 //            for (int i = 1; i < ste.length; i++) {
175 //                String callFrame = "[" + ste[i].getFileName() + ":"
176 //                        + ste[i].getLineNumber() + "]";
177 //                pw.print(callFrame);
178 //            }
179 //            pw.close();
180 //            String stackTrace = sw.getBuffer().toString();
181 //            Level level = this.getLevel(traceLevel);
182 //            Priority priority = this.getLogPriority();
183 //            if ( level.isGreaterOrEqual(priority)) {
184 //                logger.log(level,stackTrace);
185 //            }
186 //
187 //        }
188 //    }
189 //
190 //    /**
191 //     * Get the line count in the log stream.
192 //     *
193 //     * @return
194 //     */
195 //    public int getLineCount() {
196 //        return lineCount;
197 //    }
198 //
199 //    /**
200 //     * Get the logger.
201 //     *
202 //     * @return
203 //     */
204 //    public Logger getLogger() {
205 //        return logger;
206 //    }
207 //
208 //
209 //    /**
210 //     * This method allows you to add an external appender.
211 //     * This is useful for the case when you want to log to
212 //     * a different log stream than a file.
213 //     *
214 //     * @param appender
215 //     */
216 //    public void addAppender(Appender appender) {
217 //
218 //        this.logger.addAppender(appender);
219 //
220 //    }
221 //
222 //    /**
223 //     * Log an exception.
224 //     *
225 //     * @param ex
226 //     */
227 //    public void logException(Throwable ex) {
228 //
229 //        if (needsLogging) {
230 //
231 //            this.getLogger().error(ex.getMessage(), ex);
232 //        }
233 //    }
234 //
235 //
236 //
237 //
238 //    /**
239 //     * Counts the line number so that the debug log can be correlated to the
240 //     * message trace.
241 //     *
242 //     * @param message --
243 //     *            message to count the lines for.
244 //     */
245 //    private void countLines(String message) {
246 //        char[] chars = message.toCharArray();
247 //        for (int i = 0; i < chars.length; i++) {
248 //            if (chars[i] == '\n')
249 //                lineCount++;
250 //        }
251 //
252 //    }
253 //
254 //    /**
255 //     * Prepend the line and file where this message originated from
256 //     *
257 //     * @param message
258 //     * @return re-written message.
259 //     */
260 //    private String enhanceMessage(String message) {
261 //
262 //        StackTraceElement[] stackTrace = new Exception().getStackTrace();
263 //        StackTraceElement elem = stackTrace[2];
264 //        String className = elem.getClassName();
265 //        String methodName = elem.getMethodName();
266 //        String fileName = elem.getFileName();
267 //        int lineNumber = elem.getLineNumber();
268 //        String newMessage = className + "." + methodName + "(" + fileName + ":"
269 //                + lineNumber + ") [" + message + "]";
270 //        return newMessage;
271 //
272 //    }
273 //
274 //    /**
275 //     * Log a message into the log file.
276 //     *
277 //     * @param message
278 //     *            message to log into the log file.
279 //     */
280 //    public void logDebug(String message) {
281 //        if (needsLogging) {
282 //            String newMessage = this.enhanceMessage(message);
283 //            if ( this.lineCount == 0) {
284 //                getLogger().debug("BUILD TIMESTAMP = " + this.buildTimeStamp);
285 //                getLogger().debug("Config Propeties = " + this.configurationProperties);
286 //            }
287 //            countLines(newMessage);
288 //            getLogger().debug(newMessage);
289 //        }
290 //
291 //    }
292 //
293 //    /**
294 //     * Log a message into the log file.
295 //     *
296 //     * @param message
297 //     *            message to log into the log file.
298 //     */
299 //    public void logTrace(String message) {
300 //        if (needsLogging) {
301 //            String newMessage = this.enhanceMessage(message);
302 //            if ( this.lineCount == 0) {
303 //                getLogger().debug("BUILD TIMESTAMP = " + this.buildTimeStamp);
304 //                getLogger().debug("Config Propeties = " + this.configurationProperties);
305 //            }
306 //            countLines(newMessage);
307 //            getLogger().trace(newMessage);
308 //        }
309 //
310 //    }
311 //
312 //    /**
313 //     * Set the trace level for the stack.
314 //     */
315 //    private void setTraceLevel(int level) {
316 //        traceLevel = level;
317 //    }
318 //
319 //    /**
320 //     * Get the trace level for the stack.
321 //     */
322 //    public int getTraceLevel() {
323 //        return traceLevel;
324 //    }
325 //
326 //    /**
327 //     * Log an error message.
328 //     *
329 //     * @param message --
330 //     *            error message to log.
331 //     */
332 //    public void logFatalError(String message) {
333 //        Logger logger = this.getLogger();
334 //        String newMsg = this.enhanceMessage(message);
335 //        countLines(newMsg);
336 //        logger.fatal(newMsg);
337 //
338 //    }
339 //
340 //    /**
341 //     * Log an error message.
342 //     *
343 //     * @param message --
344 //     *            error message to log.
345 //     *
346 //     */
347 //    public void logError(String message) {
348 //        Logger logger = this.getLogger();
349 //        String newMsg = this.enhanceMessage(message);
350 //        countLines(newMsg);
351 //        logger.error(newMsg);
352 //
353 //    }
354 //
355 //    public LogWriter() {
356 //    }
357 //
358 //	public void setStackProperties(Properties configurationProperties) {
359 //
360 //        this.configurationProperties = configurationProperties;
361 //
362 //        String logLevel = configurationProperties
363 //                .getProperty("gov.nist.javax.sip.TRACE_LEVEL");
364 //
365 //        this.logFileName = configurationProperties
366 //                .getProperty("gov.nist.javax.sip.DEBUG_LOG");
367 //
368 //        this.stackName = configurationProperties
369 //                .getProperty("javax.sip.STACK_NAME");
370 //
371 //        //check whether a Log4j logger name has been
372 //        //specified. if not, use the stack name as the default
373 //        //logger name.
374 //        String category = configurationProperties
375 //                                .getProperty("gov.nist.javax.sip.LOG4J_LOGGER_NAME", this.stackName);
376 //
377 //
378 //        logger = Logger.getLogger(category);
379 //        if (logLevel != null) {
380 //            if (logLevel.equals("LOG4J")) {
381 //                //if TRACE_LEVEL property is specified as
382 //                //"LOG4J" then, set the traceLevel based on
383 //                //the log4j effective log level.
384 //                Level level = logger.getEffectiveLevel();
385 //                this.needsLogging = true;
386 //                if (level == Level.OFF)
387 //                    this.needsLogging = false;
388 //                this.traceLevel = TRACE_NONE;
389 //                if (level.isGreaterOrEqual(Level.DEBUG)) {
390 //                    this.traceLevel = TRACE_DEBUG;
391 //                } else if (level.isGreaterOrEqual(Level.INFO)) {
392 //                    this.traceLevel = TRACE_INFO;
393 //                } else if (level.isGreaterOrEqual(Level.WARN)) {
394 //                    this.traceLevel = TRACE_ERROR;
395 //                }
396 //            }
397 //            else {
398 //                try {
399 //                    int ll = 0;
400 //                    if (logLevel.equals("TRACE")) {
401 //                        ll = TRACE_DEBUG;
402 //                        Debug.debug = true;
403 //                        Debug.setStackLogger(this);
404 //                    } else if (logLevel.equals("DEBUG")) {
405 //                        ll = TRACE_DEBUG;
406 //                    } else if ( logLevel.equals("INFO")) {
407 //                        ll = TRACE_INFO;
408 //                    } else if (logLevel.equals("ERROR")) {
409 //                        ll = TRACE_ERROR;
410 //                    } else if (logLevel.equals("NONE") || logLevel.equals("OFF")) {
411 //                        ll = TRACE_NONE;
412 //                    } else {
413 //                        ll = Integer.parseInt(logLevel);
414 //                        if ( ll > 32 ) {
415 //                            Debug.debug = true;
416 //                            Debug.setStackLogger(this);
417 //                        }
418 //                    }
419 //
420 //                    this.setTraceLevel(ll);
421 //                    this.needsLogging = true;
422 //                    if (traceLevel == TRACE_DEBUG) {
423 //                        logger.setLevel(Level.DEBUG);
424 //                    } else if (traceLevel == TRACE_INFO) {
425 //                        logger.setLevel(Level.INFO);
426 //                    } else if (traceLevel == TRACE_ERROR) {
427 //                        logger.setLevel(Level.ERROR);
428 //                    } else if (traceLevel == TRACE_NONE) {
429 //                        logger.setLevel(Level.OFF);
430 //                        this.needsLogging = false;
431 //                    }
432 //
433 //                    /*
434 //                     * If user specifies a logging file as part of the startup
435 //                     * properties then we try to create the appender.
436 //                     */
437 //                    if (this.needsLogging && this.logFileName != null) {
438 //
439 //                        boolean overwrite = Boolean.valueOf(
440 //                                configurationProperties.getProperty(
441 //                                "gov.nist.javax.sip.DEBUG_LOG_OVERWRITE"));
442 //
443 //                        FileAppender fa = null;
444 //                        try {
445 //                            fa = new FileAppender(new SimpleLayout(),
446 //                                    this.logFileName, !overwrite);
447 //                        } catch (FileNotFoundException fnf) {
448 //
449 //                            // Likely due to some directoy not existing. Create
450 //                            // them
451 //                            File logfile = new File(this.logFileName);
452 //                            logfile.getParentFile().mkdirs();
453 //                            logfile.delete();
454 //
455 //                            try {
456 //                                fa = new FileAppender(new SimpleLayout(),
457 //                                        this.logFileName);
458 //                            } catch (IOException ioe) {
459 //                                ioe.printStackTrace(); // give up
460 //                            }
461 //                        } catch (IOException ex) {
462 //                            ex.printStackTrace();
463 //                        }
464 //
465 //                        if (fa != null)
466 //                            logger.addAppender(fa);
467 //                    }
468 //
469 //                } catch (NumberFormatException ex) {
470 //                    ex.printStackTrace();
471 //                    System.err.println("LogWriter: Bad integer " + logLevel);
472 //                    System.err.println("logging dislabled ");
473 //                    needsLogging = false;
474 //                }
475 //            }
476 //        } else {
477 //            this.needsLogging = false;
478 //
479 //        }
480 //
481 //
482 //    }
483 //
484 //    /**
485 //     * @return flag to indicate if logging is enabled.
486 //     */
487 //    public boolean isLoggingEnabled() {
488 //
489 //        return this.needsLogging;
490 //    }
491 //
492 //    /**
493 //     * Return true/false if loging is enabled at a given level.
494 //     *
495 //     * @param logLevel
496 //     */
497 //    public boolean isLoggingEnabled(int logLevel) {
498 //        return this.needsLogging && logLevel <= traceLevel;
499 //    }
500 //
501 //
502 //    /**
503 //     * Log an error message.
504 //     *
505 //     * @param message
506 //     * @param ex
507 //     */
508 //    public void logError(String message, Exception ex) {
509 //        Logger logger = this.getLogger();
510 //        logger.error(message, ex);
511 //
512 //    }
513 //
514 //    /**
515 //     * Log a warning mesasge.
516 //     *
517 //     * @param string
518 //     */
519 //    public void logWarning(String string) {
520 //        getLogger().warn(string);
521 //
522 //    }
523 //
524 //    /**
525 //     * Log an info message.
526 //     *
527 //     * @param string
528 //     */
529 //    public void logInfo(String string) {
530 //        getLogger().info(string);
531 //    }
532 //
533 //    /**
534 //     * Disable logging altogether.
535 //     *
536 //     */
537 //    public void disableLogging() {
538 //        this.needsLogging = false;
539 //    }
540 //
541 //    /**
542 //     * Enable logging (globally).
543 //     */
544 //    public void enableLogging() {
545 //        this.needsLogging = true;
546 //
547 //    }
548 //
549 //    public void setBuildTimeStamp(String buildTimeStamp) {
550 //        this.buildTimeStamp = buildTimeStamp;
551 //
552 //    }
553 //
554 //    public Priority getLogPriority() {
555 //         if ( this.traceLevel == TRACE_INFO ) {
556 //            return Priority.INFO;
557 //        } else if ( this.traceLevel == TRACE_ERROR ) {
558 //            return Priority.ERROR;
559 //        } else if ( this.traceLevel == TRACE_DEBUG) {
560 //            return Priority.DEBUG;
561 //        } else if ( this.traceLevel == TRACE_TRACE) {
562 //            return Priority.DEBUG;
563 //        } else {
564 //            return Priority.FATAL;
565 //        }
566 //    }
567 //
568 //    public Level getLevel(int traceLevel) {
569 //        if ( traceLevel == TRACE_INFO ) {
570 //           return Level.INFO;
571 //       } else if ( traceLevel == TRACE_ERROR ) {
572 //           return Level.ERROR;
573 //       } else if ( traceLevel == TRACE_DEBUG) {
574 //           return Level.DEBUG;
575 //       } else if (traceLevel == TRACE_TRACE) {
576 //           return Level.ALL;
577 //       } else {
578 //           return Level.OFF;
579 //       }
580 //   }
581 //
582 //	public String getLoggerName() {
583 //	    if ( this.logger != null ) {
584 //	        return logger.getName();
585 //	    } else {
586 //	        return null;
587 //	    }
588 //	}
589 //
590 //
591 //}
592 
593 // END android-deleted
594