Java日志可以通过使用java.util.logging包中的Logger类来实现.
使用方法如下:
首先,需要获取一个Logger实例,可以使用Logger.getLogger()方法来获取. 例如:
Logger logger = Logger.getLogger(MyClass.class.getName())
使用logger实例记录日志. Logger类提供了多个重载的log()方法来记录不同级别的日志. 例如:
logger.info("This is an info message.")
logger.warning("This is a warning message.")
logger.severe("This is a severe message.")
可以使用logger.setLevel()方法来设置日志记录级别,只有大于等于该级别的日志才会被记录.
可以使用logger.addHandler()方法来添加日志处理器(Handler),来将日志输出到不同的地方,如控制台、文件、网络等.
使用logger.log() 可以记录不同级别的日志,可以根据需要记录不同级别的日志
可以使用logger.setUseParentHandlers(false) 取消继承父级日志处理器,只使用自己的处理器
单独的Java程序包, 需要通过命令java -jar或java -cp的方式启动我们可以在启动命令中加入系统运行时变量, 在log4j加载配置文件之前通过System.getProperties(“path”)读取此变量, 即可实现灵活加载当前路径.
(1) 启动脚本设置:
假设当前项目的目录结构为:
/Projects/KafkaConsumer
丨 bin 项目的启动脚本
丨 conf 项目的配置文件
丨 lib 项目的其他依赖包
丨 bogs 项目的日志输出路径
启动脚本位于bin目录下, 内容示例如下:
# 获取当前脚本所处的目录, 然后进入其上级目录, 最后pwd输出该目录, 最终的结果是/Project/KafkaConsumerbase_dir=$(cd `dirname $0`cd ..pwd)# 获取Java运行程序的位置, 并指定主类java_bin=$(which java)main_class=”org.shoufeng.elastic.ConsumerMain”# 通过-cp、扩展CLASSPATH、指定主类的方式启动项目, # 并通过“-D”的方式向此程序的运行时环境中设置当前项目的路径,# 即可在程序中通过System.getProperty(“base.dir”)获取此路径 nohup ${java_bin} -Dbase.dir=${base_dir} -cp ${CLASSPATH}:${base_dir}/conf:${base_dir}/lib/* ${main_class} >>/dev/null &
(2) Java程序读取变量:
实log4j的FileAppender本身支持动态设置文件路径, 如:
log4j.appender.logfile.File=${base.log}/logs/app.log
其中“${base.log}”是一个变量, 会被System Property中的base.log的值代替, 代码中的使用方式为:
public static void main(String[] args) { // 获取系统运行时变量中的日志文件的输出路径 // 此变量需要在启动命令中通过-D的方式设置 String baseDir = System.getProperty(“b
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)