1. import java.util.logging.*;
  2. import java.util.concurrent.*;
  3. public class ScheduledLogHandler {
  4. private static final Logger logger = Logger.getLogger(ScheduledLogHandler.class.getName()); // Logger instance
  5. private static final Handler handler = new StreamHandler(System.out); // Default handler - can be customized
  6. private static final Level logLevel = Level.INFO; // Set the desired log level
  7. public static void main(String[] args) {
  8. try {
  9. logger.setLevel(logLevel); // Set the logger level
  10. handler.setFilter(new Filter()); // Apply a filter for failure handling
  11. logger.addHandler(handler); // Add the handler to the logger
  12. ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); // Create a thread pool
  13. // Example scheduled task
  14. Runnable task = () -> {
  15. try {
  16. // Code that might fail
  17. logger.info("Task started.");
  18. int result = divide(10, 0); // Intentionally causing an error
  19. logger.info("Task completed with result: " + result);
  20. } catch (Exception e) {
  21. // Handle the exception gracefully
  22. logger.severe("Task failed: " + e.getMessage()); // Log the error
  23. // Optionally, perform cleanup or retry logic here
  24. }
  25. };
  26. executor.scheduleAtFixedRate(task, 0, 5, TimeUnit.SECONDS); // Run the task every 5 seconds
  27. } catch (Exception e) {
  28. logger.critical("Failed to initialize logger: " + e.getMessage()); // Log initialization errors
  29. }
  30. }
  31. // Example function that might throw an exception
  32. private static int divide(int a, int b) {
  33. return a / b;
  34. }
  35. // Filter class to handle log entry failures
  36. static class Filter extends FilterHandler {
  37. @Override
  38. public boolean shouldIgnore() {
  39. // Return true to ignore log entries that cause exceptions
  40. return true;
  41. }
  42. }
  43. }

Add your comment