HowTos Log Management
Aus Salespoint
(→Define a new LogEntry) |
(→Define a new LogEntryFilter) |
||
Zeile 63: | Zeile 63: | ||
</code> | </code> | ||
- | ===Define a new LogEntryFilter=== | + | ===Define a new LogEntryFilter=== |
+ | |||
+ | '''Description:''' | ||
+ | A LogEntryFilter is used either to enable logging of certain LogEntries only or to display / process certain LogEntries of a Log (which is a representation of the "log file"). | ||
+ | To "filter" the LogEntries, set the filter to the LogOutputStream or LogInputStream that is being used. It will check wether the handed over LogEntry suits the condition described in the method accept(LogEntry logEntry) of LogEntryFilter. | ||
+ | The easyest way to decide on the acception is by cheking wether a LogEntry is an instance of something or not, but anything that tells LogEntries from will do. | ||
+ | In this expample we define a LogEntryFilter that will only accept instances of OpenLogEntry, which is another example, defining a LogEntry for the opening of the a SalesPoint. (Therefore see: [[#Define a new LogEntry]]) | ||
+ | |||
+ | '''ToDo:''' | ||
+ | |||
+ | # Create a new class implementing LogEntryFilter. | ||
+ | # Implement accept(LogEntry logEntry) to return true if a le is an instance of OpenLogEntry. | ||
+ | # Use the LogEntryFilter with the designated LogInputStream or LogOutputStream. | ||
+ | |||
+ | '''Example Source Code:''' | ||
+ | <code java> | ||
+ | 1 | ||
+ | public class OpenLogEntryFilter implements LogEntryFilter | ||
+ | { | ||
+ | |||
+ | 2 | ||
+ | public boolean accept(LogEntry logEntry) | ||
+ | { | ||
+ | // that will return true if le is an instance of OpenLogEntry | ||
+ | return (logEntry instanceof OpenLogEntry); | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
===Define a new ProcessLogEntry=== | ===Define a new ProcessLogEntry=== | ||
===Implement the Interface Loggable=== | ===Implement the Interface Loggable=== |
Version vom 22:22, 5. Apr. 2009
Inhaltsverzeichnis |
Define a Log
Description: As described in #Understand logging, a Log is the representation of the "log file", which only is a real file, if the specified OutputStream is the recommended FileOutputstream. For a global Log, you only have to define a GlobalOutputStream by calling the static method Log.setGlobalLogOutputStream(OutputStream newOS). For local logging, you have to initialize a new instance of Log, either by using the constructor, the static method Log.createLog(OutputStream newOS) or a LogCreator.
ToDo:
- For the initialization find a place at the beginning of your application runtime to make sure, the LogOutputStream exists before any logging starts.
- Due to the new FileOutputStream, remember to catch the thrown IOException.
- Use the static method setGlobalOutputStream, which will initialize a new Log and a globally reachable OutputStream, enabling logging to it anywhere in your application.
Example Source Code:
1
// within the main method, but may be anywhere before any logging starts
public static void main(String[] args)
{
LogShop logShop = new LogShop();
Shop.setTheShop(logShop);
2
// remember to catch the possible IOException of creating a new FileOutputStream
try
{
3
// the static method will initialize a new Log and set the FileOutputStream global
// so it can be used anywhere in the application
Log.setGlobalOutputStream(new FileOutputStream("machine.log", true));
}
catch(IOException ioException)
{
System.err.println("Unable to create log file.");
}
}
Define a new LogEntry
Description: A LogEntry is what is being put into the LogOutputStream when logging an event. The information needed for the Log is provided by the two methods public String toString() and public Date getLogDate(). These are the methods to be redefined in order to suit your event log. By default they return "Object logged: " + getLogDate() and the present system date at the point of logging. In our OpenLogEntry we keep the system date as return of getLogDate, but redefine the toString() method to return the String "Counter opened".
ToDo:
- Create a new subclass of LogEntry.
- Redefine the toString() method to return a suitable text for the event.
- Use the LogEntry to be returned by the method getLogData() of the implementation of Loggable.
Example Source Code:
1
public class OpenLogEntry extends LogEntry
{
2
public String toString()
{
return "Counter opened";
}
}
Define a new LogEntryFilter
Description: A LogEntryFilter is used either to enable logging of certain LogEntries only or to display / process certain LogEntries of a Log (which is a representation of the "log file"). To "filter" the LogEntries, set the filter to the LogOutputStream or LogInputStream that is being used. It will check wether the handed over LogEntry suits the condition described in the method accept(LogEntry logEntry) of LogEntryFilter. The easyest way to decide on the acception is by cheking wether a LogEntry is an instance of something or not, but anything that tells LogEntries from will do. In this expample we define a LogEntryFilter that will only accept instances of OpenLogEntry, which is another example, defining a LogEntry for the opening of the a SalesPoint. (Therefore see: #Define a new LogEntry)
ToDo:
- Create a new class implementing LogEntryFilter.
- Implement accept(LogEntry logEntry) to return true if a le is an instance of OpenLogEntry.
- Use the LogEntryFilter with the designated LogInputStream or LogOutputStream.
Example Source Code:
1
public class OpenLogEntryFilter implements LogEntryFilter
{
2
public boolean accept(LogEntry logEntry)
{
// that will return true if le is an instance of OpenLogEntry
return (logEntry instanceof OpenLogEntry);
}
}