Syslog White Paper FAQ Examples JavaDoc Classloader
Protomatter Software v1.1.7

Class PerChannelPolicy

All Implemented Interfaces:

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
          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


public PerChannelPolicy()
Default constructor.
Method Detail


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


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


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.
shouldLog in class SimpleLogPolicy


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


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


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

Protomatter Software v1.1.7
Copyright 1998-2002 Nate Sammons

Protomatter Software v1.1.7