??xml version="1.0" encoding="utf-8" standalone="yes"?>99久久99久久久精品齐齐,久久99精品久久久久久久久久,国产乱码精品一区二区三区不卡 http://www.aygfsteel.com/liangj/zh-cnThu, 19 Jun 2025 20:03:23 GMTThu, 19 Jun 2025 20:03:23 GMT60初学Linux,命o相关(有待更新...)http://www.aygfsteel.com/liangj/archive/2008/05/22/202181.html梁健梁健Thu, 22 May 2008 07:26:00 GMThttp://www.aygfsteel.com/liangj/archive/2008/05/22/202181.htmlhttp://www.aygfsteel.com/liangj/comments/202181.htmlhttp://www.aygfsteel.com/liangj/archive/2008/05/22/202181.html#Feedback0http://www.aygfsteel.com/liangj/comments/commentRss/202181.htmlhttp://www.aygfsteel.com/liangj/services/trackbacks/202181.html    刚刚接触Linux,命o模式

  1. 所?命o大全"里找不到的命?--"fg"?bg"?jobs"?&"?ctrl + z"

       q几个命令都是跟pȝd有关?

            1.1 "&"---q个用在一条命令的最后可以把当前命o调至后台执行.

            命o[root@localhost root]# man find (查找"find"的说明文?会蟩q另一?H口"如下?:

                    (?)

            1.2 "ctrl+z"---可以一个正在前台执行的命o暂停q放到后?/p>

                要蟩?.1的窗口可以有两种方式(也许有更?望指?

                    1) 输入":q"会自动蟩回[root@localhost root]#面;

                    2) ?ctrl+z"也可以蟩回[root@localhost root]#面,其会昄如下?:

                        (?)

            1.3 "jobs"---可以查看当前有多个被暂停执行的命o在后台运?如下?:

                    (?)

                如图有两个被暂停执行的命令在驻在后?其中[2],[3]代表驻在后台的命o代码,只具有局部作?后面?-","+"本hq没弄清楚什么意?:) 望指?

            1.4 "bg"---一个在后台暂停的命令,变成l箋执行.如果后台中有多个命oQ可以用bg number选中的命令调出,number是通过jobs命o查到的后台正在执行的命o的序?如图4中[number](不是pid)  

                    (?)

                q样后台同样q是有两个命令在q行,只是没有调出来前?(可以跌q步直接到达1.5步骤)

            1.5 "fg"---后C的命令调臛_台l运?如果后台中有多个命oQ可以用 fg number选中的命令调出,number是通过jobs命o查到的后台正在执行的命o的序?如图5中[number](不是pid)

                    (?)

                上图的结果可以再q回到图1的结?

                    

        主题1的说明到此ؓ?希望可以帮到有需要的?o(∩_∩)o...哈哈,接受评h.



梁健 2008-05-22 15:26 发表评论
]]>
log4j.properties详细说明(转蝲)http://www.aygfsteel.com/liangj/archive/2008/04/17/193673.html梁健梁健Thu, 17 Apr 2008 02:54:00 GMThttp://www.aygfsteel.com/liangj/archive/2008/04/17/193673.html
log4j.properties 使用
一.参数意义说明
  • 输出U别的种c?/li>
ERROR、WARN、INFO、DEBUG
ERROR Z重错?主要是程序的错误
WARN Z般警告,比如session丢失
INFO Z般要昄的信息,比如dd
DEBUG 为程序的调试信息
  • 配置日志信息输出目的?/li>
log4j.appender.appenderName = fully.qualified.name.of.appender.class
1.org.apache.log4j.ConsoleAppenderQ控制台Q?br /> 2.org.apache.log4j.FileAppenderQ文Ӟ
3.org.apache.log4j.DailyRollingFileAppenderQ每天生一个日志文Ӟ
4.org.apache.log4j.RollingFileAppenderQ文件大到达指定尺寸的时候生一个新的文Ӟ
5.org.apache.log4j.WriterAppenderQ将日志信息以流格式发送到L指定的地方)
  • 配置日志信息的格?/li>
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
1.org.apache.log4j.HTMLLayoutQ以HTML表格形式布局Q,
2.org.apache.log4j.PatternLayoutQ可以灵zd指定布局模式Q,
3.org.apache.log4j.SimpleLayoutQ包含日志信息的U别和信息字W串Q,
4.org.apache.log4j.TTCCLayoutQ包含日志生的旉、线E、类别等{信息)
  • 控制台选项
Threshold=DEBUG:指定日志消息的输出最低层ơ?br /> ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立卌出?br /> Target=System.errQ默认情况下是:System.out,指定输出控制?br />
  • FileAppender 选项
Threshold=DEBUF:指定日志消息的输出最低层ơ?br /> ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立卌出?br /> File=mylog.txt:指定消息输出到mylog.txt文g?br /> Append=false:默认值是true,卛_消息增加到指定文件中Qfalse指将消息覆盖指定的文件内宏V?br />
  • RollingFileAppender 选项
Threshold=DEBUG:指定日志消息的输出最低层ơ?br /> ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立卌出?br /> File=mylog.txt:指定消息输出到mylog.txt文g?br /> Append=false:默认值是true,卛_消息增加到指定文件中Qfalse指将消息覆盖指定的文件内宏V?br /> MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小Ӟ会自动滚动Q即原来的内容Udmylog.log.1文g?br /> MaxBackupIndex=2:指定可以产生的滚动文件的最大数?br /> log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
日志信息格式中几个符h代表的含义:
 -X? X信息输出时左寚wQ?br />  %p: 输出日志信息优先U,即DEBUGQINFOQWARNQERRORQFATAL,
 %d: 输出日志旉点的日期或时_默认格式为ISO8601Q也可以在其后指定格式,比如Q?d{yyy MMM dd HH:mm:ss,SSS}Q输出类|2002q?0?8?22Q?0Q?8Q?21
 %r: 输出自应用启动到输出该log信息耗费的毫U数
 %c: 输出日志信息所属的cȝQ通常是所在类的全?br />  %t: 输出产生该日志事件的U程?br />  %l: 输出日志事g的发生位|,相当?C.%M(%F:%L)的组?包括cȝ名、发生的U程Q以及在代码中的行数。D例:Testlog4.main (TestLog4.java:10)
 %x: 输出和当前线E相兌的NDC(嵌套诊断环境),其用到像java servletsq样的多客户多线E的应用中?br />  %%: 输出一?%"字符
 %F: 输出日志消息产生时所在的文g名称
 %L: 输出代码中的行号
 %m: 输出代码中指定的消息,产生的日志具体信?br />  %n: 输出一个回车换行符QWindowsq_?"r"n"QUnixq_?"n"输出日志信息换行
 可以?与模式字W之间加上修饰符来控制其最宽度、最大宽度、和文本的对齐方式。如Q?br />  1)%20cQ指定输出category的名Uͼ最的宽度?0Q如果category的名U小?0的话Q默认的情况下右寚w?br />  2)%-20c:指定输出category的名Uͼ最的宽度?0Q如果category的名U小?0的话Q?-"h定左寚w?br />  3)%.30c:指定输出category的名Uͼ最大的宽度?0Q如果category的名U大?0的话Q就会将左边多出的字W截掉,但小?0的话也不会有I格?br />  4)%20.30c:如果category的名U小?0pI格Qƈ且右寚wQ如果其名称长于30字符Q就从左边较q输出的字符截掉?br />
?文g配置
  • Sample1
log4j.rootLogger=DEBUG,A1,R
#log4j.rootLogger=INFO,A1,R
# ConsoleAppender 输出
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
# File 输出 一天一个文?输出路径可以定制,一般在根\径下
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=blog_log.txt
log4j.appender.R.MaxFileSize=500KB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
  • Sample2
下面l出的Log4J配置文g实现了输出到控制収ͼ文gQ回滚文Ӟ发送日志邮Ӟ输出到数据库日志表,自定义标{全套功能?br /> log4j.rootLogger=DEBUG,CONSOLE,A1,im
#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE
log4j.addivity.org.apache=true
###################
# Console Appender
###################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n
#####################
# File Appender
#####################
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# Use this layout for LogFactor 5 analysis
########################
# Rolling File
########################
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=rolling.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=10KB
log4j.appender.ROLLING_FILE.MaxBackupIndex=1
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
####################
# Socket Appender
####################
log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
log4j.appender.SOCKET.RemoteHost=localhost
log4j.appender.SOCKET.Port=5001
log4j.appender.SOCKET.LocationInfo=true
# Set up for Log Facter 5
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n
########################
# Log Factor 5 Appender
########################
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
########################
# SMTP Appender
#######################
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=chenyl@yeqiangwei.com
log4j.appender.MAIL.SMTPHost=mail.hollycrm.com
log4j.appender.MAIL.Subject=Log4J Message
log4j.appender.MAIL.To=chenyl@yeqiangwei.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
########################
# JDBC Appender
#######################
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=SampleMessages.log4j
log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout
###################
#自定义Appender
###################
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = corlin@yeqiangwei.com
log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
?高使用
实验目的Q?br />  1.把FATALU错误写?000NT日志
 2. WARNQERRORQFATALU错误发送email通知理?br />  3.其他U别的错误直接在后台输出
实验步骤Q?br />  输出?000NT日志
 1.把Log4j压羃包里的NTEventLogAppender.dll拷到WINNT"SYSTEM32目录?br />  2.写配|文件log4j.properties
# ?000pȝ日志输出
 log4j.logger.NTlog=FATAL, A8
 # APPENDER A8
 log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender
 log4j.appender.A8.Source=JavaTest
 log4j.appender.A8.layout=org.apache.log4j.PatternLayout
 log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
3.调用代码Q?br />  Logger logger2 = Logger.getLogger("NTlog"); //要和配置文g中设|的名字相同
 logger2.debug("debug!!!");
 logger2.info("info!!!");
 logger2.warn("warn!!!");
 logger2.error("error!!!");
 //只有q个错误才会写入2000日志
 logger2.fatal("fatal!!!");
发送email通知理员:
 1. 首先下蝲JavaMail和JAF,
  http://java.sun.com/j2ee/ja/javamail/index.html
  http://java.sun.com/beans/glasgow/jaf.html
 在项目中引用mail.jar和activation.jar?br />  2. 写配|文?br />  # 日志发送到email
 log4j.logger.MailLog=WARN,A5
 #  APPENDER A5
 log4j.appender.A5=org.apache.log4j.net.SMTPAppender
 log4j.appender.A5.BufferSize=5
 log4j.appender.A5.To=chunjie@yeqiangwei.com
 log4j.appender.A5.From=error@yeqiangwei.com
 log4j.appender.A5.Subject=ErrorLog
 log4j.appender.A5.SMTPHost=smtp.263.net
 log4j.appender.A5.layout=org.apache.log4j.PatternLayout
 log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
 3.调用代码Q?br />  //把日志发送到mail
 Logger logger3 = Logger.getLogger("MailLog");
 logger3.warn("warn!!!");
 logger3.error("error!!!");
 logger3.fatal("fatal!!!");
在后台输出所有类别的错误Q?br />  1. 写配|文?br />  # 在后台输?br />  log4j.logger.console=DEBUG, A1
 # APPENDER A1
 log4j.appender.A1=org.apache.log4j.ConsoleAppender
 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
 log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
 2Q调用代?br />  Logger logger1 = Logger.getLogger("console");
 logger1.debug("debug!!!");
 logger1.info("info!!!");
 logger1.warn("warn!!!");
 logger1.error("error!!!");
 logger1.fatal("fatal!!!");
--------------------------------------------------------------------
 全部配置文gQlog4j.properties
 # 在后台输?br />  log4j.logger.console=DEBUG, A1
 # APPENDER A1
 log4j.appender.A1=org.apache.log4j.ConsoleAppender
 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
 log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
# ?000pȝ日志输出
 log4j.logger.NTlog=FATAL, A8
 # APPENDER A8
 log4j.appender.A8=org.apache.log4j.nt.NTEventLogAppender
 log4j.appender.A8.Source=JavaTest
 log4j.appender.A8.layout=org.apache.log4j.PatternLayout
 log4j.appender.A8.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
# 日志发送到email
 log4j.logger.MailLog=WARN,A5
 #  APPENDER A5
 log4j.appender.A5=org.apache.log4j.net.SMTPAppender
 log4j.appender.A5.BufferSize=5
 log4j.appender.A5.To=chunjie@yeqiangwei.com
 log4j.appender.A5.From=error@yeqiangwei.com
 log4j.appender.A5.Subject=ErrorLog
 log4j.appender.A5.SMTPHost=smtp.263.net
 log4j.appender.A5.layout=org.apache.log4j.PatternLayout
 log4j.appender.A5.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
全部代码QLog4jTest.java
 
/*
  * 创徏日期 2003-11-13
  */
 package edu.bcu.Bean;
 import org.apache.log4j.*;
 //import org.apache.log4j.nt.*;
 //import org.apache.log4j.net.*;
 /**
  * @author yanxu
  */
 public class Log4jTest
 {
  public static void main(String args[])
  {
   PropertyConfigurator.configure("log4j.properties");
   //在后台输?
   Logger logger1 = Logger.getLogger("console");
   logger1.debug("debug!!!");
   logger1.info("info!!!");
   logger1.warn("warn!!!");
   logger1.error("error!!!");
   logger1.fatal("fatal!!!");
//在NTpȝ日志输出
   Logger logger2 = Logger.getLogger("NTlog");
   //NTEventLogAppender nla = new NTEventLogAppender();
   logger2.debug("debug!!!");
   logger2.info("info!!!");
   logger2.warn("warn!!!");
   logger2.error("error!!!");
   //只有q个错误才会写入2000日志
   logger2.fatal("fatal!!!");
//把日志发送到mail
   Logger logger3 = Logger.getLogger("MailLog");
   //SMTPAppender sa = new SMTPAppender();
   logger3.warn("warn!!!");
   logger3.error("error!!!");
   logger3.fatal("fatal!!!");
  }
 }


梁健 2008-04-17 10:54 发表评论
]]>
解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的Ҏhttp://www.aygfsteel.com/liangj/archive/2008/03/26/188666.html梁健梁健Wed, 26 Mar 2008 02:38:00 GMThttp://www.aygfsteel.com/liangj/archive/2008/03/26/188666.htmlhttp://www.aygfsteel.com/liangj/comments/188666.htmlhttp://www.aygfsteel.com/liangj/archive/2008/03/26/188666.html#Feedback2http://www.aygfsteel.com/liangj/comments/commentRss/188666.htmlhttp://www.aygfsteel.com/liangj/services/trackbacks/188666.htmlSituation(原因):
    javax.servlet.HttpServletRequest.getParameter(String) returns null when the ContentType is multipart/form-data

Solutions(解决办法):
  • Solution A: 
    1. download http://www.servlets.com/cos/index.html
    2. invoke getParameters() on com.oreilly.servlet.MultipartRequest
  • Solution B:
    1. download http://jakarta.apache.org/commons/fileupload/ 
    2. invoke readHeaders() in org.apache.commons.fileupload.MultipartStream
    Or
    1. Invoke parseRequest(request) on org.apache.commons.fileupload.FileUploadBase which returns list of org.apache.commons.fileupload.FileItem objects.
   2. Invoke isFormField() on each of the FileItem objects. This determines whether the file item is a form paramater or stream of uploaded file.
   3. Invoke getFieldName() to get parameter name and getString() to get parameter value on FileItem if it's a form parameter. Invoke write(java.io.File) on FileItem to save the uploaded file stream to a file if the FileItem is not a form parameter.

  • Solution C:
    1. download http://users.boone.net/wbrameld/multipartformdata/
    2. invoke getParameter on com.bigfoot.bugar.servlet.http.MultipartFormData
  • Solution D:
    Use Struts. Struts 1.1 handles this automatically.


梁健 2008-03-26 10:38 发表评论
]]>
վ֩ģ壺 | ˺| Դ| | ƽ| | | | Ԫ| ƽ| Ӣ| | | | | ʻ| | | ʻ| ɽ| ̷| ɽ| | | | ̫| | | | ˫| | ˮ| | Ͻ| ַ| ͨ| ߰| «Ϫ| ʯ| ٲ| |