「java日志打印占位符」java打印日志中文乱码
本篇文章给大家谈谈java日志打印占位符,以及java打印日志中文乱码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java中占位符怎么用
- 2、java&Tomcat 服务下的日志打印会占用内存的解决方法及思路
- 3、java中两种占位符的使用方式
- 4、如何打印java 日志
- 5、java.text.messageformat可以使用占位符吗
- 6、java打印日志的几种方式
java中占位符怎么用
String stringFormat = "lexical error at position %s, encountered %s, expected %s ";
String messageFormat ="lexical error at position {0}, encountered {1}, expected {2}";
System.out.println(String.format(stringFormat, 123, 100, 456));
System.out.println(MessageFormat.format(messageFormat, new Date(), 100, 456));
java&Tomcat 服务下的日志打印会占用内存的解决方法及思路
工具/原料tomcatEditPlus方法/步骤怎么知道tomcat服务器内存溢出了呢?看一下cmd命令行显示的内容就知道了,java.lang.OutOfMemoryError:PermGenspace就是内存溢出找到tomcat路径,用编辑器打开catalina.sh在“echo"UsingCATALINA_BASE:$CATALINA_BASE"”上面加入以下行:JAVA_OPTS="-server-XX:PermSize=64M-XX:MaxPermSize=128m保存后,重新启动tomcat服务器,这时候应该正常了,如果还是提示内存溢出,只能是下面的这种情况了内存溢出的另外一种情况就是:电脑内存不够了!这种情况是很有可能发生了,出现内存溢出的时候大家可以检查一下。这种电脑内存不够,只能建议大家给电脑加一根内存条,不加就删除一些程序,清理一下电脑。
java中两种占位符的使用方式
String stringFormat = "lexical error at position %s, encountered %s, expected %s ";
System.out.println(String.format(stringFormat, 123, 100, 456));
String messageFormat ="lexical error at position {0}, encountered {1}, expected {2}";
System.out.println(MessageFormat.format(messageFormat, new Date(), 100, 456));
先学现卖 哈哈
如何打印java 日志
可以使用log4j。使用方法如下供参考:
导入jar包
配置log4j.properties文件
创建工具类(接口)
public interface LoggerUtil {
// 得到Logger,用于打印日志
Logger logger = Logger.getLogger(LoggerUtil.class);
}
4、使用(核心代码介绍)
@RequestMapping("/delete.do")
public String delete(Students students) {
try {
stuService.delete(students);
} catch (Exception e) {
// 使用日志
LoggerUtil.logger.error(e.getMessage());
}
return "redirect:selectAll.do";
}
java.text.messageformat可以使用占位符吗
这个坑,就出现在下面这个api的使用
java.text.MessageFormat.format(String pattern,java.lang.Object... arguments);
先来个正常的:
上代码
Code:
package chapter5;
import java.text.MessageFormat;
public class MessageFormatDemo {
public static void main(String[] args) {
String pattern = "select * from staff where salary{0} and age{1}";
String result = MessageFormat.format(pattern, 100, 20);
System.out.println(result);
}
}
执行下看看结果是不是:
select * from staff where salary100 and age20
Output:
select * from staff where salary100 and age20
与预期一致
OK
现在什么物价啊,salary大于100的太多了(木有少于100的好不好)
改下,要查工资大于50 000的
Code:
String result = MessageFormat.format(pattern, 50000, 20);
执行下看看结果:
select * from staff where salary50,000 and age20
看到没
50000变成50,000
这到数据库中肯定是不行啊
为什么出现这种情况呢
扒扒源码
java.text.MessageFormat.java的
subformat(Object[] arguments,StringBuffer result,FieldPosition fp,List characterIterators)
方法中有对输入Object数据进行格式化的逻辑
} else if (obj instanceof Number) {
// format number if can
subFormatter = NumberFormat.getInstance(locale);
} else if (obj instanceof Date) {
// format a Date if can
subFormatter = DateFormat.getDateTimeInstance(
DateFormat.SHORT, DateFormat.SHORT, locale);//fix
} else if (obj instanceof String) {
arg = (String) obj;
把格式化Number的这段代码摘出来,
Format subFormatter = NumberFormat.getInstance(Locale.getDefault());
System.out.println(subFormatter.format(1000));
subFormatter = DateFormat.getDateTimeInstance( DateFormat.SHORT, DateFormat.SHORT, Locale.getDefault());//fix
System.out.println(subFormatter.format(new Date()));
执行下看看
Output:
1,000
16-4-7 上午12:40
输出结果与预期一致,果然多了个逗号
细心的tx已经看到了,日期类型也不行,一样会格式的哦
7
如果还想使用MessageFormat应该怎么处理呢?
在上面的源码中,可以看到,在格式化时,String类型是不处理的
只要把arguments的参数改为String就可以了
Code:
String result = MessageFormat.format(pattern, "50000", 20);
java打印日志的几种方式
在Java 中实现记录日志的方式有很多种, 下面给你简单介绍四种:
最简单的方式,就是system.println.out(error) ,这样直接在控制台打印消息了。
Java.util.logging ; 在JDK 1.4 版本之后,提供了日志的API ,可以往文件中写日志了。
log4j , 最强大的记录日志的方式。 可以通过配置 .properties 或是 .xml 的文件, 配置日志的目的地,格式等等。
commons-logging, 最综合和常见的日志记录方式, 经常是和log4j 结合起来使用。
java日志打印占位符的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java打印日志中文乱码、java日志打印占位符的信息别忘了在本站进行查找喔。