00001
00007 import gugga.logging.formatters.DefaultFormatter;
00008 import gugga.logging.IFilter;
00009 import gugga.logging.IFormatter;
00010 import gugga.logging.IPublisher;
00011 import gugga.logging.Level;
00012 import gugga.logging.LogRecord;
00013
00014 class gugga.logging.publishers.DefaultPublisher implements IPublisher
00015 {
00016 private var filter:IFilter;
00017 private var formatter:IFormatter;
00018 private var level:Level;
00019
00023 public function DefaultPublisher()
00024 {
00025 this.setFormatter(new DefaultFormatter());
00026 }
00027
00031 public function publish(logRecord:LogRecord):Void
00032 {
00033 if (this.isLoggable(logRecord)) {
00034 trace(this.getFormatter().format(logRecord));
00035 }
00036 }
00037
00041 public function setFilter(filter:IFilter):Void
00042 {
00043 this.filter = filter;
00044 }
00045
00049 public function getFilter():IFilter
00050 {
00051 return this.filter;
00052 }
00053
00057 public function setFormatter(formatter:IFormatter):Void
00058 {
00059 this.formatter = formatter;
00060 }
00061
00065 public function getFormatter():IFormatter
00066 {
00067 return this.formatter;
00068 }
00069
00073 public function setLevel(level:Level):Void
00074 {
00075 this.level = level;
00076 }
00077
00081 public function getLevel():Level
00082 {
00083 return this.level;
00084 }
00085
00089 public function isLoggable(logRecord:LogRecord):Boolean
00090 {
00091 if (this.getLevel() > logRecord.getLevel()) {
00092 return false;
00093 }
00094
00095 if (this.getFilter() == undefined || this.getFilter() == null) {
00096 return true;
00097 }
00098
00099 if (this.getFilter().isLoggable(logRecord)) {
00100 return true;
00101 }
00102
00103 return false;
00104 }
00105 }