Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6746891
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T12:22:34+00:00 2026-05-26T12:22:34+00:00

i would like to know how to use the java.util.logging api, in order to

  • 0

i would like to know how to use the java.util.logging api, in order to have log message written in different log file depending on the level used. If the level is INFO then i would like to have the message written in /log/info.log and so on. The 3 defined level are severe, warning and info.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T12:22:35+00:00Added an answer on May 26, 2026 at 12:22 pm

    You use custom Handlers to write the Log Records.

    Here is a simple, but complete example you can build upon.

    import java.io.IOException;
    import java.util.logging.FileHandler;
    import java.util.logging.Level;
    import java.util.logging.LogRecord;
    
    public class LevelBasedFileHandler extends FileHandler
    {
        public LevelBasedFileHandler(final Level level) throws IOException, SecurityException
        {
            super();
            super.setLevel(level);
        }
    
        public LevelBasedFileHandler(final String s, final Level level) throws IOException, SecurityException
        {
            super(s);
            super.setLevel(level);
        }
    
        public LevelBasedFileHandler(final String s, final boolean b, final Level level) throws IOException, SecurityException
        {
            super(s, b);
            super.setLevel(level);
        }
    
        public LevelBasedFileHandler(final String s, final int i, final int i1, final Level level) throws IOException, SecurityException
        {
            super(s, i, i1);
            super.setLevel(level);
        }
    
        public LevelBasedFileHandler(final String s, final int i, final int i1, final boolean b, final Level level) throws IOException, SecurityException
        {
            super(s, i, i1, b);
            super.setLevel(level);
        }
    
        @Override
        public void setLevel() { throw new UnsupportedOperationException("Can't change after construction!"); }
    
        // This is the important part that makes it work
        // it also breaks the contract in the JavaDoc for FileHandler.setLevel() 
        @Override
        public void publish(final LogRecord logRecord)
        {
            if (logRecord.getLevel().equals(super.getLevel())
            {
                super.publish(logRecord);
            }
        }
    }
    

    and here is how to use it

    try
    {
        // I use the Anonymous logger here, but any named logger will work as well
        final Logger l = Logger.getAnonymousLogger();
        l.addHandler(new LevelBasedFileHandler("/tmp/info.log", Level.INFO));
        l.addHandler(new LevelBasedFileHandler("/tmp/warn.log", Level.WARNING));
        l.addHandler(new LevelBasedFileHandler("/tmp/server.log", Level.SEVERE));
    
        l.info("This is an INFO message");
        l.warning("This is a WARNING message");
        l.severe("This is a SEVERE message");
    }
    catch (final IOException e)
    {
        // ignore this for this example, you should never do this in real code
    }
    

    you will get three files in /tmp each with only the messages for each particular log level in them.

    Note, I like the Dependency Injection style approach of requiring the Level in the constructor so you can’t “forget” to call .setLevel() when using this sub-class. I also disabled .setLevel() because calling it and changing would break the semantics of the subclass”

    Just for completeness you can use a java.util.logging.Filter to acomplish the same thing. It isn’t as encapsulated but it is an alternative. It is more code and more verbose, thus more to not get right.

    final FileHandler infoFileHandler = new FileHandler("/tmp/info.log");
    infoFileHandler.setFilter(new Filter()
    {
        public boolean isLoggable(final LogRecord logRecord)
        {
            return logRecord.getLevel().equals(Level.INFO);
        }
    });
    

    Personally I still like the sub-class approach better, it is less error prone and more self documenting as of its purpose and intent.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a generator and I would like to know if I can use
I would like to know how to use Converters in Java Server Faces similar
I would like to know how to use multiples clas in Java. I know
i would like to know how to use a DocumentListener/DocumentEvent in java to prevent
I'm using ASP.NET MVC Preview 4 and would like to know how to use
I would like to know what kind of tool you use for writing your
I would like to know how to make use of an Axiom database resource
I would like to know what I should use to compile in C. I
I would like to know if I can use the following JQuery function on
I would like to know how can I use tinyint in SQL Server 2005

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.