trunk/com/so/news/Debug.java
author chris <chris@marvin>
Tue, 20 Jan 2009 10:21:03 +0100
changeset 0 f907866f0e4b
permissions -rw-r--r--
Initial import.
chris@0
     1
/*
chris@0
     2
 *   StarOffice News Server
chris@0
     3
 *   see AUTHORS for the list of contributors
chris@0
     4
 *
chris@0
     5
 *   This program is free software: you can redistribute it and/or modify
chris@0
     6
 *   it under the terms of the GNU General Public License as published by
chris@0
     7
 *   the Free Software Foundation, either version 3 of the License, or
chris@0
     8
 *   (at your option) any later version.
chris@0
     9
 *
chris@0
    10
 *   This program is distributed in the hope that it will be useful,
chris@0
    11
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
chris@0
    12
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
chris@0
    13
 *   GNU General Public License for more details.
chris@0
    14
 *
chris@0
    15
 *   You should have received a copy of the GNU General Public License
chris@0
    16
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
chris@0
    17
 */
chris@0
    18
chris@0
    19
package com.so.news;
chris@0
    20
chris@0
    21
import java.io.FileOutputStream;
chris@0
    22
import java.io.IOException;
chris@0
    23
import java.io.PrintStream;
chris@0
    24
import java.util.Date;
chris@0
    25
chris@0
    26
/**
chris@0
    27
 * Provides logging and debugging methods.
chris@0
    28
 * @author Christian Lins
chris@0
    29
 */
chris@0
    30
public class Debug
chris@0
    31
{
chris@0
    32
  private static Debug instance = null;
chris@0
    33
  
chris@0
    34
  /**
chris@0
    35
   * Returns the singelton instance of this class.
chris@0
    36
   */
chris@0
    37
  public static Debug getInstance()
chris@0
    38
  {
chris@0
    39
    if(instance == null)
chris@0
    40
      instance = new Debug();
chris@0
    41
    
chris@0
    42
    return instance;
chris@0
    43
  }
chris@0
    44
  
chris@0
    45
  private PrintStream out = System.err;
chris@0
    46
  
chris@0
    47
  /**
chris@0
    48
   * This class is a singelton class. The constructor is private to prevent
chris@0
    49
   * the creation of more than one instance.
chris@0
    50
   */
chris@0
    51
  private Debug()
chris@0
    52
  {
chris@0
    53
    try
chris@0
    54
    {
chris@0
    55
      String filename = Config.getInstance().get(Config.CONFIG_N3TPD_LOGFILE, "n3tpd.log");
chris@0
    56
      
chris@0
    57
      this.out = new PrintStream(new FileOutputStream(filename));
chris@0
    58
    }
chris@0
    59
    catch(IOException e)
chris@0
    60
    {
chris@0
    61
      e.printStackTrace();
chris@0
    62
    }
chris@0
    63
  }
chris@0
    64
  
chris@0
    65
  /**
chris@0
    66
   * Returns the debug output PrintStream. By default this is System.err.
chris@0
    67
   */
chris@0
    68
  public PrintStream getStream()
chris@0
    69
  {
chris@0
    70
    return out;
chris@0
    71
  }
chris@0
    72
  
chris@0
    73
  /**
chris@0
    74
   * Writes the given message to the debug output.
chris@0
    75
   * @param msg A String message or an object.
chris@0
    76
   */
chris@0
    77
  public void log(Object msg)
chris@0
    78
  {
chris@0
    79
    log(out, msg);
chris@0
    80
    log(System.out, msg);
chris@0
    81
  }
chris@0
    82
  
chris@0
    83
  /**
chris@0
    84
   * Writes the given debug message to the given PrintStream.
chris@0
    85
   * @param out
chris@0
    86
   * @param msg
chris@0
    87
   */
chris@0
    88
  public void log(PrintStream out, Object msg)
chris@0
    89
  {
chris@0
    90
    out.print(new Date().toString());
chris@0
    91
    out.print(": ");
chris@0
    92
    out.println(msg.toString());
chris@0
    93
    out.flush();
chris@0
    94
  }
chris@0
    95
}