You have 3 options:
- Log4J
- java.util.logging (JUL)
- Logback (the successor of Log4J)
Now, let's see how they meet your requirements:
- actively maintained
- reasonably powerful
- have a maven repo
- can be reconfigured without restarting your app
- don't tie you to XML
log4j
:
- No, not actively maintained
- Yes -
- Yes -
- Yes -
- Yes (using Java properties file, see Configuration).
java.util.logging
(JUL):
- I'd say Yes -
- at your discretion -
- N/A -
- Yes (via JMX or LogManager#readConfiguration() -
- Yes (using properties files)
Logback:
- Yes -
- Yes -
- Yes -
- Yes, via JMX or autoScan -
- Configuration files in XML or Groovy
It looks like you'll have to make some concessions (or find a framework I'm not aware of). I would go for Logback, this is where things happen now.