你的log4j配置文件有错误,你看看你的log4j用的是properties文件还是xml文件,在里面搜manager,把相关的段删掉就ok了
❷ 使用JDBC向mysql数据库插入中文乱码如何解决url、数据库属性和workspace的编码库均设成utf-8,始终乱码
String sql ="insert into userinfo(name,pwd) values(?,?)";
PreparedStatementpst=getConnection().prepareStatement(sql);
pst.setString(1,"小明");
pst.setString(2,"123");
pst.executeUpdate();
小伙子给你写了一个通用的增删改查的工具类,你那样写太麻烦
资源文件jdbc.properties
jdbc.Driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/xxx
jdbc.username=root
jdbc.password=root
packagecom.;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.ResultSetMetaData;
importjava.sql.SQLException;
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Properties;
importorg.apache.commons.beanutils.BeanUtils;
importorg.apache.log4j.Logger;
publicclassBaseDao{
privatestaticStringDRIVDR;
privatestaticStringURL;
privatestaticStringUSER;
privatestaticStringPWD;
;
=newProperties();
privatestaticLoggerlogger=Logger.getLogger(BaseDao.class);
;
privatestaticResultSetrs;
privatestaticfinalStringCLASS_NOT_EXCEPTION="驱动加载失败";
static{
try{
properties.load(BaseDao.class.getResourceAsStream("/jdbc.properties"));
DRIVDR=properties.getProperty("jdbc.Driver");
URL=properties.getProperty("jdbc.url");
USER=properties.getProperty("jdbc.username");
PWD=properties.getProperty("jdbc.password");
Class.forName(DRIVDR);
}catch(Exceptione){
logger.debug(CLASS_NOT_EXCEPTION+e.getMessage());
}
}
/**
*通用的增删改
*
*@paramsql
*@paramargs
*@return
*/
publicstaticintexecuteCommand(Stringsql,Object...args){
intm=0;
try{
initPreparedStatement(sql,args);
m=pst.executeUpdate();
}catch(Exceptione){
logger.debug("执行增、删、该。错误。。请检查preparedStatement参数。。。"+e.getMessage());
}finally{
closeAll(null,pst,connection);
}
returnm;
}
(Stringsql,Object...args){
try{
pst=getConnection().prepareStatement(sql);
if(args!=null){
for(inti=0;i<args.length;i++){
pst.setObject(i+1,args[i]);
}
}
}catch(Exceptione){
logger.debug("为pst对象赋值错误。。请检查preparedStatement参数。。。"+e.getMessage());
}
returnpst;
}
/**
*通用的执行聚合函数
*@paramsql
*@paramargs
*@return
*/
publicstaticintexecuteScalare(Stringsql,Object...args){
intcount=0;
initPreparedStatement(sql,args);
try{
rs=pst.executeQuery();
if(rs.next()){
count=rs.getInt(1);
}
}catch(SQLExceptione){
logger.debug("执行聚合函数出错。。。请检查preparedStatement参数。。。"+e.getMessage());
}finally{
closeAll(rs,pst,connection);
}
returncount;
}
/**
*根据id查询单个对象
*@paramsql
*@paramclazz
*@paramargs
*@return
*/
publicstatic<T>TfindById(Stringsql,Class<T>clazz,Object...args){
Tt=null;
try{
initPreparedStatement(sql,args);
rs=pst.executeQuery();
ResultSetMetaDatametaData=rs.getMetaData();
//以上的代码:获取元数据(各个字段的数据类型)
intcount=metaData.getColumnCount();
//获取字段的数量
if(rs.next()){
try{
t=clazz.newInstance();//利用反射自动创建对象的类型的对象User.classUser
//u=newUser();
for(inti=1;i<=count;i++){
BeanUtils.Property(t,metaData.getColumnName(i),rs.getObject(i));
//自动获取各个字段的名称并获取该字段的值
}
}catch(Exceptione){
logger.debug("查询单个对象,错误。。请检查preparedStatement参数。。。。"+e.getMessage());
}
}
}catch(SQLExceptione){
logger.debug("查询失败。。。。。"+e.getMessage());
}
returnt;
}
/**
*通用的查询
*
*@paramsql
*@paramclazz
*@paramargs
*@return
*/
publicstatic<T>List<T>findAll(Stringsql,Class<T>clazz,Object...args){
List<T>list=newArrayList<T>(100);
Tt=null;
try{
initPreparedStatement(sql,args);
rs=pst.executeQuery();
ResultSetMetaDatametaData=rs.getMetaData();
//以上的代码:获取元数据(各个字段的数据类型)
intcount=metaData.getColumnCount();
//获取字段的数量
while(rs.next()){
try{
t=clazz.newInstance();//利用反射自动创建对象的类型的对象User.classUser
//u=newUser();
for(inti=1;i<=count;i++){
BeanUtils.Property(t,metaData.getColumnName(i),rs.getObject(i));
//自动获取各个字段的名称并获取该字段的值
}
}catch(Exceptione){
logger.debug("查询集合,错误。。。。。"+e.getMessage());
}
list.add(t);//将对象添加到集合中
}
}catch(SQLExceptione){
logger.debug("查询失败。。。。。"+e.getMessage());
}
returnlist;
}
(){
try{
if(connection==null||connection.isClosed()){
connection=DriverManager.getConnection(URL,USER,PWD);
}
}catch(SQLExceptione){
logger.debug("获取connection失败,请检查配置文件!"+e.getMessage());
}
returnconnection;
}
publicstaticvoidcloseAll(ResultSetrs,PreparedStatementpst,Connectionconn){
if(rs!=null)
try{
rs.close();
}catch(SQLExceptione){
logger.debug("关闭ResultSet错误。。。。。"+e.getMessage());
}
if(pst!=null)
try{
pst.close();
}catch(SQLExceptione){
logger.debug("关闭PreparedStatement错误。。。。。"+e.getMessage());
}
if(conn!=null)
closeConnection(conn);
}
(Connectionconn){
try{
if(!conn.isClosed()){
conn.close();
}
}catch(SQLExceptione){
logger.debug("关闭Connection错误。。。。。"+e.getMessage());
}finally{
conn=null;
}
}
publicstaticvoidmain(String[]args){
System.out.println(BaseDao.getConnection());
}
}
❸ 在linux下配置log4j
其实主要矛盾是在linux下的物理路径问题:
1、使用<%=application.getRealPath("/")%>测试出当前站点在系统中的绝对路径,如:/vhost/6/6/2/net66243875/www/
2、修改输出源中文件位置如:
# 每天新建日志
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=/vhost/6/6/2/net66243875/www/log.txt
log4j.appender.A1.Encoding=utf-8
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.DatePattern='.'yyyy-MM-dd
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L : %m%n
❹ java高手帮忙看下,log4J怎么输入到里面出现乱码怎么解决
log4j.appender.rootFileApd.Encoding=UTF-8 把你的GBK换成UTF-8看看
❺ java中tomcat启动时log4j中文乱码如何处理
是因为输出日志的编码和当前系统的编码不一样
❻ log4j日志文件乱码怎么办,如何解决
解决方法如下:
如果是log4j.properties为配置文件,比如:
[c-sharp]viewplain
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.File=all.log
加入一行:
[c-sharp]viewplain
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.Encoding=UTF-8
log4j.appender.A1.File=all.log
如果是log4j.xml为配置文件,比如:
[c-sharp]viewplain
<appendername="A1"class="org.apache.log4j.RollingFileAppender">
<paramname="File"value="all.log"/>
......
</appender>
加入一行:
[c-sharp]viewplain
<appendername="A1"class="org.apache.log4j.RollingFileAppender">
<paramname="Encoding"value="UTF-8"/>
<paramname="File"value="all.log"/>
......
</appender>
原理:
log4j通过QuietWriter写日志,QuietWriter extends FilterWriter,FilterWriter extends Writer,而Writer写入的是字符流,对字符集比较敏感。英文系统一般默认latin-1字符集,只能处理半角,通过encoding指定字符集后,能够正确输出指定字符集的字符流。
字符集指定后,WriterAppender的setEncoding通过org.apache.log4j.config.PropertySetter.setProperties(Object obj, Properties properties, String prefix)设置字符集。
❼ linux查看日志,如何解决字符串乱码
主要思路有两种抄:【1】本地客户端编码设置错了如果你用的是putty 一、Linux系统的设置
1)关闭Linux的防火墙
#iptables -F
#iptables save
2)编辑/etc/sysconfig/i18n,将LANG=en_US.UTF-8改为LANG=zh_CN.UTF-8
SUPPORT=en_US.UTF-8….也作类似改动,接下来执行:
#. /etc/sysconfig/i18n
#locale (检查本地locale)
如果看到显示了LANG=zh_CN.UTF-8等信息,表明改动成功。【2】服务器不支持中文字符串显示【3】有可能是程序代码例如log4j文件设置错了
--------------------- 建议看看这本书《Linux就该这么学》
在Xshell、putty、SSH Secure Shell Client 等等客户端设置utf8的编码就可以了,在“文件”选项里点开“属性”一项进行设置,如下图:
❽ springboot jar包在linux下运行,log4j日志 中文乱码怎么办
解决方法:
如果是log4j.properties为配置文件专,比如:属
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.File=all.log
❾ springboot jar包在linux下运行,log4j日志 中文乱码怎么办
解决方法:
如果是log4j.properties为配置文件,比如:
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.File=all.log