项目中logger、message错误信息的配置
申明:在一个项目中必不可少的是Logger和错误信息的配置,现在给出在我们常用的处理方法。
—、创建一个ConfigUtils类和他对应的rah.properties文件和Test测试类
ConfigUtis:
package com.rah; import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; public class ConfigUtils { private static final String PROPERTIES_FILE = "com/rah/rah.properties"; private static Properties prop = null; static{
InputStream propStream = ConfigUtils.class.getClassLoader().getResourceAsStream(PROPERTIES_FILE);
prop = new Properties();
try {
prop.load(propStream);
} catch (IOException e) {
System.out.println("读取文件失败");
}
} public static String getProperty(String key){
return prop.getProperty(key);
}
}
rah.properties
photoDir=d:/temp/photo
videoDir=d:/temp/video
test
package com.rah;
public class Test {
public static void main(String[] args) {
String photoDir = ConfigUtils.getProperty("photoDir");
String videoDir = ConfigUtils.getProperty("videoDir");
System.out.println("photoDir Path is: " + photoDir);
System.out.println("videoDir path is: " + videoDir);
}
}
测试结果:
photoDir Path is: d:/temp/photo
videoDir path is: d:/temp/video
二、创建MessageManager类、message.properties和测试类Test.
MessageManager
package com.rah; import java.io.IOException;
import java.io.InputStream;
import java.text.MessageFormat;
import java.util.Properties; public class MessageManager {
private static final String PROPERTIES_FILE = "/properties/message.properties";
private static Properties prop = null;
static{
InputStream propStream = MessageManager.class.getResourceAsStream(PROPERTIES_FILE);
prop = new Properties();
try {
prop.load(propStream);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("读取文件失败");
}
}
public static String getProperty(String messageCode){
return prop.getProperty(messageCode);
}
public static String getProperty(String messageCode, String arg1){
Object[] args = new Object[1];
args[0] = arg1;
return getFormatMessage(messageCode, args);
}
public static String getProperty(String messageCode, String arg1, String arg2){
Object[] args = new Object[2];
args[0] = arg1;
args[1] = arg2;
return getFormatMessage(messageCode, args);
}
public static String getProperty(String messageCode, String arg1, String arg2, String arg3){
Object[] args = new Object[3];
args[0] = arg1;
args[1] = arg2;
args[2] = arg3;
return getFormatMessage(messageCode, args);
}
private static String getFormatMessage(String messageCode, Object[] args) {
String argMessage = getProperty(messageCode);
return MessageFormat.format(argMessage, args);
} }
Message.properties
MSG_E00001=password is not correct
MSG_E00002=country is {0}
MSG_E00003=country is {0} provice is {1}
MSG_E00004=country is {0} provice is {1} city is {2}
Test
package com.rah;
public class Test {
public static void main(String[] args) {
System.out.println("MSG_E00001 data is: " + MessageManager.getProperty("MSG_E00001"));
System.out.println("MSG_E00002 data is: " + MessageManager.getProperty("MSG_E00002", "CHINA"));
System.out.println("MSG_E00003 data is: " + MessageManager.getProperty("MSG_E00003", "CHINA", "JIANGXI"));
System.out.println("MSG_E00004 data is: " + MessageManager.getProperty("MSG_E00004", "CHINA", "JIANGXI", "SHANGRAO"));
}
}
测试结果:
MSG_E00001 data is: password is not correct
MSG_E00002 data is: country is CHINA
MSG_E00003 data is: country is CHINA provice is JIANGXI
MSG_E00004 data is: country is CHINA provice is JIANGXI city is SHANGRAO
三、Loger日志输出,其实就是对log4j的一点封装,方便开发人员使用
public class Logger {
private static org.apache.log4j.Logger logger = org.apache.log4j.Logger
.getLogger(org.apache.log4j.Logger.class);
public static void debug(String message) {
logger.debug(message);
}
public static void debug(String message, Throwable ex) {
logger.debug(message, ex);
}
public static void info(String message) {
logger.info(message);
}
public static void info(String message, Throwable ex) {
logger.info(message, ex);
}
public static void error(String message) {
logger.error(message);
}
public static void error(String message, Throwable ex) {
logger.error(message, ex);
}
public static void fatal(String message) {
logger.fatal(message);
}
public static void fatal(String message, Throwable ex) {
logger.fatal(message, ex);
}
public static void warn(String message) {http://i.cnblogs.com/EditPosts.aspx?opt=1
logger.warn(message);
}
public static void warn(String message, Throwable ex) {http://i.cnblogs.com/EditPosts.aspx?opt=1
logger.warn(message, ex);
}
}
四、对class.getResourceAsStream()、class.getClassLoader().getResourceAsStream()区别的分析
思心的网友肯定会发现我上面的两个测试分别采用了class.getResourceAsStream(),和class.getClassLoader().getResourceAsStream().其实一开始我也没有注意,是在查API的时候发现有不同的方法,于是为了试试他们的用法特地采用了不同的写法。
class.getResourceAsStream()会指定的加载的资源路径与当前类所在的包的路径一致
像上面的MessageManager类如果写成getResourceAsStream("message.properties")则他就只会在ciom.rah包下寻找,此时我们采用"/"开头,那么就会从classpath的根路径开始查找(SRC根目录)getResourceAsStream("/properties/message.properties")就是在SRC目录下创建了properties目录接着创建了message.properties文件。
ClassLoader.gettResourceAsStream()无论要查找的资源前面是否有"/"都是从classpath的根路径下查找。
像上面的ConfigUtil类getResourceAsStream("/rah.properties")和("rah.properties")都是直接从SRC目录下找rah.properties文件。
最后补充:
程序运行的是最后编译成.class的文件。这个SRC目录下的所有东西都会编译在bin目录下。
项目中logger、message错误信息的配置的更多相关文章
- SpringBoot项目中应用Jedis和一些常见配置
优雅的使用Jedis Redis的Java客户端有很多,Jedis是其中使用比较广泛和性能比较稳定的一个.并且其API和RedisAPI命名风格类似,推荐大家使用 在项目中引入Jedis 可以通过Ma ...
- 项目中调用ExcelCom组件时的配置流程
异常提示如下: Microsoft Office Excel 不能访问文件“*.xls”. 可能的原因有: 1 文件名称或路径不存在. 2 文件正被其他程序使 ...
- windows下cmd时复制dos中的内容 错误信息等
16:28 2015/11/23小发现 windows下cmd时复制dos中的内容,错误信息等:鼠标右键选择标记,然后ctrl c 即可.
- 遍历ModelState中存储的错误信息
在服务器端验证中,有时我们添加了一个ModelError,然后还需要将该信息以JS的形式返回到客户端.如: [HttpPost] public ActionResult Index(LogOnMode ...
- ANT 发布项目中 build.xml 文件的详细配置
xml 代码 <?xml version="1.0" encoding="UTF-8"?> <!-- name:对应工程名字 default: ...
- 在项目中创建单元测试时junit的配置和使用
首先配置项目中AndroidMainfest.xml文件,加入 <instrumentation android:name="android.test.InstrumentationT ...
- ASP.Net MVC3/4中Model验证错误信息的本地化
最近使用ASP.Net MVC4做一个B/S的管理系统,里面有N多的Action和View Model,View Model上又有N多的验证. 一开始写的时候虽然知道要实现多语言,但是没有过多考虑,本 ...
- creat-react-app搭建的项目中按需引入antd以及配置Less和如何修改antd的主题色
在creat-react-app搭建的项目环境中按需引入antd以及配置less,首先需要暴露出来webpack文件.(此操作不可逆). create-react-app myapp 创建同一个rea ...
- vue项目中net::ERR_CONNECTION_TIMED_OUT错误
我出错的原因时network地址与我本机ip地址不一致 Network: http://192.168.13.30:8080/ 处理方法: 在vue项目中新建一个vue.config.js文件 配置上 ...
随机推荐
- Dynamices CRM Permission Issue (Security role UI to privilege mapping)'s solution
select * from privilege where privilegeid = 'a4736385-9763-4a64-a44b-cd5933edc631' Security role UI ...
- PHP函数积累总结(Math函数、字符串函数、数组函数)
Math函数:10个较常用标红.abs — 绝对值acos — 反余弦acosh — 反双曲余弦asin — 反正弦asinh — 反双曲正弦atan2 — 两个参数的反正切atan — 反正切ata ...
- 遇到Class Not registered的COM异常怎么办
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:遇到Class Not registered的COM异常怎么办.
- 安装完Ubuntu 14.04要做的九件事
www.linuxidc.com/Linux/2014-04/100411.htm 1.看看有哪些新特性 安装完之后的第一件事肯定是看看Ubuntu 14.04有哪些新的特性. Ubuntu 14.0 ...
- Hyper-V网络虚拟化--VM之间拷贝速度慢
Hyper-V网络虚拟化后,两台VM使用的是同一个VM网卡,相同IP地址池,但是互相拷贝文件速度很慢,只有2M左右,拷贝同时ping延迟在2000ms,解决方法: 主机型号:HP ProLiant D ...
- scala编程笔记(三)类,字段和方法
类,字段和方法 类是对象的蓝图,能够通过new来创建对象.在类的定义里能够有字段和方法.统称member val还是var都是指向对象的变量(var定义的字段可又一次赋值),def定义方法,包括可运行 ...
- linux中安装easy_install(setuptools)
假设是相似于ubuntu的带桌面的系统直接下载安装就能够了.下面是针对centOS的命令行安装方法 最好先查看版本号号,依据版本号来选择安装方法.终端命令例如以下 # lsb_release -a 版 ...
- iOS9适配
一.App Transport Security xcode7安装后,你会发现ios9之后后默认所有http请求都无法继续有效,但是基于现状,我们并不能这么快改成https请求,所以基本上大多数app ...
- 玩转Android之在线视频播放控件Vitamio的使用
其实Android中自带的MediaPlayer本身就能播放在线视频,MediaPlayer结合SurfaceView播放在线视频也是不错的选择(如果你没有性能或者用户体验上的要求),关于MediaP ...
- android使用模拟机测试时,若要联网IP地址该怎么写?
android使用模拟机测试时,如果服务器也是本机,那么IP地址如果写为localhost或者127.0.0.1,这样其实是不能访问到本机上部署的服务端,那么该怎么写呢?很简单,把IP地址改为10.0 ...