- Use format strings so any overhead of building the string is only incurred if the message is actually logged - Pass throwables as the first parameter so they are logged with the stacktrace