Created
February 22, 2023 15:08
-
-
Save renaudfv/8683660061e06fbe14848b67b1c8e379 to your computer and use it in GitHub Desktop.
Processing logger using java util logging lib
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.logging.*; | |
import java.util.Date; | |
// Main logger | |
Logger LOGGER = Logger.getLogger(""); | |
MyCustomClass customInstance; | |
void setupLogging() { | |
try { | |
// Logg to file, max size 1048576bits, rotate every 5 files, append to existing file | |
Handler handler = new FileHandler(sketchPath("output_%g.log"), 1048576, 5, true); | |
// Format time input | |
handler.setFormatter(new SimpleFormatter() { | |
// [DD-MM-YYYY HH:MM:SS GMT-TIMEZONE] <LEVEL> Logline | |
private static final String format = "[%1$td-%1$tm-%1$tY %1$tT GMT%1tz] <%2$-4s> %3$s %n"; | |
@Override | |
public synchronized String format(LogRecord lr) { | |
return String.format(format, | |
new Date(lr.getMillis()), | |
lr.getLevel().getLocalizedName(), | |
lr.getMessage() | |
); | |
} | |
} | |
); | |
LOGGER.addHandler(handler); | |
} | |
catch (Exception e) { | |
LOGGER.warning("Error setting up logging " + e); | |
} | |
} | |
void setup() { | |
setupLogging(); | |
customInstance = new MyCustomClass(); | |
// Use the main logger to do program level logging | |
LOGGER.log(Level.INFO, "Setup complete"); | |
} | |
void draw() { | |
background(0); | |
customInstance.draw(); | |
if(frameCount % 100 == 0) { | |
LOGGER.info("Log every 100 frames"); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class MyCustomClass { | |
int x; | |
int y; | |
// Class level logger | |
Logger logger = Logger.getLogger(MyCustomClass.class.getName()); | |
MyCustomClass() { | |
this.x = 0; | |
this.y = 0; | |
this.logger.info("MyCustomClass constructor has been called"); | |
} | |
void draw() { | |
this.update(); | |
square(this.x, this.y, 10); | |
if(frameCount % 200 == 0) { | |
this.logger.warning("Useless class level log warning every 200 frame"); | |
} | |
} | |
void update() { | |
this.x = (int) random(0, 100); | |
this.y = (int) random(0, 100); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment