你的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