SimpleFormatter is a built-in formatter class in Java used to format log records into a simple, readable, text-based format.
Simple Program
import java.util.logging.*;
public class SimpleFormatterExample {
public static void main(String[] args) {
Logger logger = Logger.getLogger("SimpleLogger");
// Create a ConsoleHandler
ConsoleHandler handler = new ConsoleHandler();
// Set SimpleFormatter (default)
handler.setFormatter(new SimpleFormatter());
// Add handler and disable parent
logger.addHandler(handler);
logger.setUseParentHandlers(false);
logger.info("This is an info message.");
logger.warning("This is a warning message.");
}
}Sample Output:
May 24, 2025 10:00:00 AM SimpleLogger main
INFO: This is an info message.
May 24, 2025 10:00:00 AM SimpleLogger main
WARNING: This is a warning message.Code language: CSS (css)
Problem Statement
LotusJavaPrince is building a Banking Transaction Logger. Mahesh, the lead developer, wants to log all deposit and withdrawal activities with a simple timestamped format for debugging and audit tracking. The log should use SimpleFormatter and be output to a file.
import java.io.IOException;
import java.util.logging.*;
class BankAccount {
private String accountHolder;
private double balance;
private Logger logger;
public BankAccount(String accountHolder) {
this.accountHolder = accountHolder;
this.balance = 0.0;
logger = Logger.getLogger(accountHolder);
setupLogger();
}
private void setupLogger() {
try {
FileHandler fileHandler = new FileHandler(accountHolder + "_log.txt", true);
fileHandler.setFormatter(new SimpleFormatter());
logger.addHandler(fileHandler);
logger.setUseParentHandlers(false); // Prevent console logging
} catch (IOException e) {
System.out.println("Logging setup failed: " + e.getMessage());
}
}
public void deposit(double amount) {
balance += amount;
logger.info("Deposited: " + amount + " | Balance: " + balance);
}
public void withdraw(double amount) {
if (amount <= balance) {
balance -= amount;
logger.info("Withdrawn: " + amount + " | Balance: " + balance);
} else {
logger.warning("Withdrawal failed: Insufficient funds. Attempted: " + amount + " | Balance: " + balance);
}
}
public double getBalance() {
return balance;
}
}
public class BankTransactionLogger {
public static void main(String[] args) {
BankAccount account = new BankAccount("Mahesh");
account.deposit(1000);
account.withdraw(400);
account.withdraw(700); // Should log a warning
}
}
Output in Mahesh_log.txt:
May 24, 2025 10:10:00 AM Mahesh deposit
INFO: Deposited: 1000.0 | Balance: 1000.0
May 24, 2025 10:10:02 AM Mahesh withdraw
INFO: Withdrawn: 400.0 | Balance: 600.0
May 24, 2025 10:10:04 AM Mahesh withdraw
WARNING: Withdrawal failed: Insufficient funds. Attempted: 700.0 | Balance: 600.0
In the world of Java logging using java.util.logging, Formatters play a crucial role in converting raw log records into human-readable or machine-readable output. They control how your logs appear—whether it’s a short readable text, a structured XML document, or a fully customized format.
