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 8409117
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 9, 20262026-06-09T23:49:00+00:00 2026-06-09T23:49:00+00:00

Okay so I’m trying to make a memory appender (simply a logger, that logs

  • 0

Okay so I’m trying to make a memory appender (simply a logger, that logs to an ArrayList instead of the console or to a file) but for now I want to disable it from printing to the console.

The questions and websites, I’ve read so far (but I still cant figure it out is)..

  • StackOverFlow Question log4j: Log output of a specific class to a specific appender
  • StackOverFlow Question log4j : Disable log4j console logging and enable file logging
  • Coder Launch: log4j: stop logging to console

It has all the segments on what I’m trying to achieve, but I’m still kind of confused.

I also read this segment from Logback or Log4j Additivity Explained Which states..

If the aditivity flag of logger X however is set to false, or disabled, then calling x.debug() will only log to the file.

So in theory my log4j.properties file

log4j.rootLogger=ERROR, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %5p %c (%F:%L) - %m%n
#hide the Log4jMemoryAppender from console
log4j.logger.nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender= ERROR, MEMORY_APPENDER
log4j.appender.MEMORY_APPENDER=nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender.Log4jMemoryAppender
log4j.additivity.rootLogger = false
log4j.additivity.console = false
log4j.additivity.MEMORY_APPENDER=false

Should only print ***Hello World and exclude anything else from the MEMORY_APPENDER, rootLogger and console.

package nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender;

import java.util.ArrayList;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.spi.LoggingEvent;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class Log4jMemoryAppender extends AppenderSkeleton {

ArrayList<LoggingEvent> eventsList = new ArrayList();

public static void main (String [] args) {

    PropertyConfigurator.configure("Lib/log4j.properties");
    Log4jMemoryAppender app = new Log4jMemoryAppender();
    Logger logger = Logger.getLogger(Log4jMemoryAppender.class);
    logger.setLevel(Level.INFO);

    logger.addAppender(app);
    logger.info("Hello World");
    logger.debug("Level DEBUG Is SET");

    for (LoggingEvent le: app.eventsList) {
        System.out.println("***" + le.getMessage());
    }
} 

@Override
protected void append(LoggingEvent event) {
    eventsList.add(event);
}

public void close() {
}

public boolean requiresLayout() {
    return false;
}
}

But it doesn’t…

appender
(source: iforce.co.nz)

  • 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-06-09T23:49:01+00:00Added an answer on June 9, 2026 at 11:49 pm

    The line

    MEMORY_APPENDER=false
    

    will not work, you cannot set an appender to have the value false.

    In you case better do something like this:

    log4j.rootLogger=ERROR, console
    log4j.appender.console=org.apache.log4j.ConsoleAppender
    
    log4j.logger.nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender = ERROR, MEMORY_APPENDER
    log4j.additivity.nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender = false
    

    The Logger being used in one of your example is nz.ac.massey.cs.sdc.log4jassignment.s06005586.MemoryAppender and that should map to a logger in the log4j.properties or just the package part like nz.ac.massey.cs.sdc.log4jassignment.


    It seems like you are mixing a lot here. Is Log4jMemoryAppender your MEMORY_APPENDER or not?

    And why are you calling BasicConfigurator.configure()? Don’t you want to use the log4j.properties?


    Normally in a class you do this to get a logger:

    package com.mycompany;
    
    public class MyClass {
        private static final Logger log = Logger.getLogger(MyClass.class);
        ...
    }
    

    The logger name will be the fully qualified classname com.mycompany.MyClass.

    Then you can have a log4j.properties like this:

    log4j.rootLogger=ERROR, console
    log4j.appender.console=org.apache.log4j.ConsoleAppender
    
    log4j.logger.com.mycompany=INFO, file
    log4j.additivity.com.mycompany=false
    
    logfj.appender.file = <some file appender>
    

    OK, starting from beginning. A very simple example.

    src/main/java/Log4JTest.java

    package org.stackoverflow;
    
    import org.apache.log4j.Logger;
    
    /**
     * @author maba, 2012-08-22
     */
    public class Log4JTest {
    
        public static final Logger log = Logger.getLogger(Log4JTest.class);
    
        public static void main(String[] args) {
            log.error("Error in main");
        }
    }
    

    src/main/resources/log4j.properties

    log4j.rootLogger = ERROR, console
    
    log4j.appender.console = org.apache.log4j.ConsoleAppender
    log4j.appender.console.layout=org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
    

    Now compile and make sure that log4j.properties is in your classpath together with the log4j.jar and your own classes when running.

    You will see this:

    0    [main] ERROR org.stackoverflow.Log4JTest  - Error in main
    

    From here you can try to add a file appender or your own memory appender.

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

Sidebar

Related Questions

Okay, so I'm trying to make a game that uses this algorithm: http://www.codeproject.com/Articles/15573/2D-Polygon-Collision-Detection But
Okay so I can't figure this out. Like a file that I using grep
Okay, so I know that using eval() isn't great, but I haven't been able
Okay I have a csv file that gets parsed and displayed. I want to
Okay this might be confusing. I'm trying to make a config class for myself
Okay, next PHPExcel question. I have an HTML form that users fill out and
Okay, I feel a bit foolish for having to ask this but I guess
okay, i'm setting up a multi-user chat system. i have a messages table, that
Okay, this is probably a very basic question; but, I'm just getting back in
Okay, so this is a long long shot but here it goes... When IE

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.