Syslog: White Paper FAQ Examples JavaDoc
Protomatter Classes v1.1.6

com.protomatter.syslog
Class PerChannelPolicy

java.lang.Object
  |
  +--com.protomatter.syslog.SimpleLogPolicy
        |
        +--com.protomatter.syslog.PerChannelPolicy
All Implemented Interfaces:
LogPolicy

public class PerChannelPolicy
extends SimpleLogPolicy

A policy that can make decision on a per-channel basis. It maintains a default log mask and channel list itself, but also has a list of "policy groups" that each have a log mask and channel list of their own in addition to a list of channel names that their mask and channel list applies to. If a message coming from a channel in one of those lists matches the mask and channel list, the message is logged. If not, but the message severity and channel match the default mask and channel list, it is also logged. Otherwise, the message is ignored.

This policy can be used to effectively say that messages from channels A and B should be logged if their severity is WARNING or greater, and that messages from channels C and D should be logged if their severity is INFO or greater and on a certain set of channels and that if all else fails, messages at or above the INFO level will be logged. It's very configurable.

Each "channel name" is actually a Perl5 regular expression, so you can match things like "com.protomatter.syslog.*" and other stuff. This functionality uses the ORO regular expression package, now part of the Apache Jakarta project.

See Also:
XML configuration class

Inner Class Summary
static class PerChannelPolicy.PolicyGroup
          A policy within a policy -- this is exactly like the SimpleLogPolicy except that it also checks to see if the channel issuing the log message is in some set.
 
Constructor Summary
PerChannelPolicy()
          Default constructor.
 
Method Summary
 void addPolicyGroup(PerChannelPolicy.PolicyGroup group)
          Add a policy group to our list.
 java.util.List getGroupList()
          Get the list of policy groups.
 java.util.Iterator getPolicyGroups()
          Get the list of policy groups.
 void removePolicyGroup(PerChannelPolicy.PolicyGroup group)
          Remove a policy group from our list.
 void setGroupList(java.util.List list)
          Set the list of policy groups.
 boolean shouldLog(SyslogMessage message)
          Decide if the message should be logged.
 
Methods inherited from class com.protomatter.syslog.SimpleLogPolicy
addChannel, getChannels, getLogMask, getName, inMask, removeAllChannels, removeChannel, setChannels, setChannels, setLogMask, setLogMask, setName
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PerChannelPolicy

public PerChannelPolicy()
Default constructor.
Method Detail

getGroupList

public java.util.List getGroupList()
Get the list of policy groups.

setGroupList

public void setGroupList(java.util.List list)
Set the list of policy groups.

shouldLog

public boolean shouldLog(SyslogMessage message)
Decide if the message should be logged. Each policy group is asked if it should be logged, and if none of them say yes, then we defer to our superclass. Each policy group maintains a channel list, log mask and a set of channel names -- to decide if it should log the message, the policy group first checks the message's severity and channel against its log mask and channel list. If it passes this test, the policy group checks to see if the channel name of the logger is in it's list.
Overrides:
shouldLog in class SimpleLogPolicy

getPolicyGroups

public java.util.Iterator getPolicyGroups()
Get the list of policy groups.

addPolicyGroup

public void addPolicyGroup(PerChannelPolicy.PolicyGroup group)
Add a policy group to our list.

removePolicyGroup

public void removePolicyGroup(PerChannelPolicy.PolicyGroup group)
Remove a policy group from our list.

Protomatter Classes v1.1.6
Copyright 1998-2001 Nate Sammons

Protomatter Classes v1.1.6 http://protomatter.sourceforge.net/1.1.6