Java Tutorial/Log/Log Filter

Материал из Java эксперт
Перейти к: навигация, поиск

Custom filter

   <source lang="java">

import java.util.logging.Filter; import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.Logger; class Person {

 private String name = null;
 private int age;
 public Person(String name, int age) {
   this.name = name;
   this.age = age;
 }
 public void setName(String name) {
   this.name = name;
 }
 public String getName() {
   return name;
 }
 public void setAge(int age) {
   this.age = age;
 }
 public int getAge() {
   return age;
 }

} class AgeFilter implements Filter {

 public boolean isLoggable(LogRecord record) {
   boolean result = false;
   Object[] objs = record.getParameters();
   Person person = (Person) objs[0];
   if (person != null) {
     int age = person.getAge();
     if (age > 30)
       result = true;
     else
       result = false;
   }
   return result;
 }

} public class Main {

 public static void main(String args[]) {
   Logger logger = Logger.getLogger("your.logging");
   AgeFilter filter = new AgeFilter();
   logger.setFilter(filter);
   Person person = new Person("YourName", 32);
   logger.log(Level.INFO, "Person has age " + person.getAge(), person);
 }

}</source>





Setting a Filter on a Logger Handler

   <source lang="java">

import java.util.logging.ConsoleHandler; import java.util.logging.Filter; import java.util.logging.LogRecord; import java.util.logging.Logger; public class Main {

 public static void main(String[] argv) throws Exception {
   ConsoleHandler handler = new ConsoleHandler();
   handler.setFilter(new Filter() {
     public boolean isLoggable(LogRecord record) {
      return true;
     }
   });
   // Add the handler to a logger
   Logger logger = Logger.getLogger("com.mycompany");
   logger.addHandler(handler);
 }

}</source>





Simple filter

   <source lang="java">

import java.util.logging.Filter; import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.Logger; public class MainClass {

 private static Logger logger = Logger.getLogger("SimpleFilter");
 static class A {
 };
 static class B {
 };
 static void sendLogMessages() {
   logger.log(Level.WARNING, "message 1!", new A());
   logger.log(Level.WARNING, "message 2!", new B());
 }
 public static void main(String[] args) {
   sendLogMessages();
   logger.setFilter(new Filter() {
     public boolean isLoggable(LogRecord record) {
       Object[] params = record.getParameters();
       if (params == null)
         return true;
       if (record.getParameters()[0] instanceof A)
         return true;
       return false;
     }
   });
   logger.info("After setting filter..");
   sendLogMessages();
 }

}</source>