「java日志打印占位符」java打印日志中文乱码

博主:adminadmin 2023-03-20 15:58:10 1118

本篇文章给大家谈谈java日志打印占位符,以及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日志打印占位符的信息别忘了在本站进行查找喔。