1 package com.protomatter.syslog; 2 3 52 53 import java.io.PrintWriter ; 54 import java.util.*; 55 import java.text.*; 56 import java.io.*; 57 import java.net.*; 58 59 import com.protomatter.util.*; 60 61 67 public class SimpleLogPolicy 68 implements LogPolicy 69 { 70 private String name = null; 71 private int logMask = Syslog.INHERIT_MASK; 72 private HashMap channels = null; 73 private boolean allChannels = false; 74 private boolean initialized = false; 75 private Object VALUE = new Object (); 76 77 81 public SimpleLogPolicy() 82 { 83 super(); 84 Set channels = new HashSet(); 85 channels.add(Syslog.ALL_CHANNEL); 86 setChannels(channels); 87 } 88 89 92 public String getName() 93 { 94 return this.name; 95 } 96 97 100 public void setName(String name) 101 { 102 this.name = name; 103 } 104 105 109 public synchronized void setChannels(List channels) 110 { 111 Set set = new HashSet(); 112 Iterator i = channels.iterator(); 113 while (i.hasNext()) 114 { 115 set.add(i.next()); 116 } 117 setChannels(set); 118 } 119 120 124 public synchronized void setChannels(Set channelSet) 125 { 126 this.channels = new HashMap(); 127 Iterator i = channelSet.iterator(); 128 while (i.hasNext()) 129 { 130 channels.put(i.next(), VALUE); 131 } 132 this.allChannels = channelSet.contains(Syslog.ALL_CHANNEL); 133 } 134 135 139 public synchronized void addChannel(String channel) 140 { 141 channels.put(channel, VALUE); 142 this.allChannels = channels.containsKey(Syslog.ALL_CHANNEL); 143 } 144 145 149 public synchronized void removeChannel(String channel) 150 { 151 channels.remove(channel); 152 this.allChannels = channels.containsKey(Syslog.ALL_CHANNEL); 153 } 154 155 159 public synchronized void removeAllChannels() 160 { 161 channels = new HashMap(); 162 this.allChannels = false; 163 } 164 165 168 public Iterator getChannels() 169 { 170 return channels.keySet().iterator(); 171 } 172 173 177 public boolean shouldLog(SyslogMessage message) 178 { 179 boolean inMask = false; 180 if (this.logMask == Syslog.INHERIT_MASK) 181 inMask = ((message.level & Syslog.currentLogMask) > 0); 182 else 183 inMask = ((message.level & this.logMask) > 0); 184 185 if (!inMask) 187 return false; 188 189 if (!allChannels) 191 { 192 if (Syslog.ALL_CHANNEL.equals(message.channel)) 195 return true; 196 197 return channels.containsKey(message.channel); 199 } 200 201 return true; 204 } 205 206 209 protected final boolean inMask(int level, int mask) 210 { 211 return ((level & mask) > 0); 212 } 213 214 219 public final void setLogMask(String mask) 220 { 221 setLogMask(Syslog.parseLogMask(mask)); 222 } 223 224 231 public final void setLogMask(int mask) 232 { 233 this.logMask = mask; 234 } 235 236 239 public final int getLogMask() 240 { 241 return this.logMask; 242 } 243 } 244 | Popular Tags |