green's profile我的共享空间PhotosBlogLists Tools Help

Blog


    11/29/2006

    log4j.properties 使用

    log4j.properties 使用
    一.参数意义说明
    输出级别的种类
    ERROR、WARN、INFO、DEBUG
    ERROR 为严重错误 主要是程序的错误
    WARN 为一般警告,比如session丢失
    INFO 为一般要显示的信息,比如登录登出
    DEBUG 为程序的调试信息

    配置日志信息输出目的地
    log4j.appender.appenderName = fully.qualified.name.of.appender.class
    1.org.apache.log4j.ConsoleAppender(控制台)
    2.org.apache.log4j.FileAppender(文件)
    3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
    4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
    5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)


    配置日志信息的格式
    log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
    1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
    2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
    3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
    4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

    控制台选项
    Threshold=DEBUG:指定日志消息的输出最低层次。
    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
    Target=System.err:默认情况下是:System.out,指定输出控制台

    FileAppender 选项
    Threshold=DEBUF:指定日志消息的输出最低层次。
    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
    File=mylog.txt:指定消息输出到mylog.txt文件。
    Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

    RollingFileAppender 选项
    Threshold=DEBUG:指定日志消息的输出最低层次。
    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
    File=mylog.txt:指定消息输出到mylog.txt文件。
    Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
    MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
    MaxBackupIndex=2:指定可以产生的滚动文件的最大数。

    log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
    日志信息格式中几个符号所代表的含义:
     -X号: X信息输出时左对齐;
     %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
     %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
     %r: 输出自应用启动到输出该log信息耗费的毫秒数
     %c: 输出日志信息所属的类目,通常就是所在类的全名
     %t: 输出产生该日志事件的线程名
     %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
     %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
     %%: 输出一个"%"字符
     %F: 输出日志消息产生时所在的文件名称
     %L: 输出代码中的行号
     %m: 输出代码中指定的消息,产生的日志具体信息
     %n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行
     可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
     1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
     2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
     3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
     4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。

    二.文件配置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
    下面给出的Log4J配置文件实现了输出到控制台,文件,回滚文件,发送日志邮件,输出到数据库日志表,自定义标签等全套功能。
    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@hollycrm.com
    log4j.appender.MAIL.SMTPHost=mail.hollycrm.com
    log4j.appender.MAIL.Subject=Log4J Message
    log4j.appender.MAIL.To=chenyl@hollycrm.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@cybercorlin.net

    log4j.appender.im.layout=org.apache.log4j.PatternLayout
    log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


    三.高级使用
    实验目的:
     1.把FATAL级错误写入2000NT日志
     2. WARN,ERROR,FATAL级错误发送email通知管理员
     3.其他级别的错误直接在后台输出


     实验步骤:
     输出到2000NT日志
     1.把Log4j压缩包里的NTEventLogAppender.dll拷到WINNT\SYSTEM32目录下
     2.写配置文件log4j.properties

     # 在2000系统日志输出
     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.调用代码:
     Logger logger2 = Logger.getLogger("NTlog"); //要和配置文件中设置的名字相同
     logger2.debug("debug!!!");
     logger2.info("info!!!");
     logger2.warn("warn!!!");
     logger2.error("error!!!");
     //只有这个错误才会写入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。
     2. 写配置文件
     # 将日志发送到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@263.net
     log4j.appender.A5.From=error@error.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.调用代码:
     //把日志发送到mail
     Logger logger3 = Logger.getLogger("MailLog");
     logger3.warn("warn!!!");
     logger3.error("error!!!");
     logger3.fatal("fatal!!!");

     在后台输出所有类别的错误:
     1. 写配置文件
     # 在后台输出
     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
     2.调用代码
     Logger logger1 = Logger.getLogger("console");
     logger1.debug("debug!!!");
     logger1.info("info!!!");
     logger1.warn("warn!!!");
     logger1.error("error!!!");
     logger1.fatal("fatal!!!");

     --------------------------------------------------------------------
     全部配置文件:log4j.properties
     # 在后台输出
     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

     # 在2000系统日志输出
     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@263.net
     log4j.appender.A5.From=error@error.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

     全部代码:Log4jTest.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!!!");

       //在NT系统日志输出
       Logger logger2 = Logger.getLogger("NTlog");
       //NTEventLogAppender nla = new NTEventLogAppender();
       logger2.debug("debug!!!");
       logger2.info("info!!!");
       logger2.warn("warn!!!");
       logger2.error("error!!!");
       //只有这个错误才会写入2000日志
       logger2.fatal("fatal!!!");

       //把日志发送到mail
       Logger logger3 = Logger.getLogger("MailLog");
       //SMTPAppender sa = new SMTPAppender();
       logger3.warn("warn!!!");
       logger3.error("error!!!");
       logger3.fatal("fatal!!!");
      }
     }

    11/9/2006

    我看恶搞

         近日看到网络一篇文章,题目为《司马光砸缸救出萨达姆? 专家称恶搞突破道德底线》,下面没怎么看,大概意思都差不多。心中不由一紧,其实心中总是有很多这样或那样的干净或不干净的话想说出来。但毕竟 1 俺上过学 2 俺一表斯文 3 俺衣冠楚楚。
         所以俺不能说,否则就不“和谐”了。
         俺尽可能用“和谐”的方式说和谐的话,争取即能解决问题,又能让俺看起来挺“和谐”的--上面言论绝对没有戏虐当今严肃话题的意思,请看后感觉到不舒服者绕行。
         突然感觉没地方下嘴了,不知道为什么。
         被人恶搞,在我来看,绝大多数都是活该!因为他们或多或少或直接或间接的都和一个字有关--伪。被恶搞的类别大概如下:伪善、伪权威、伪渊博、伪道德、伪常态(相对于变态来说的)、伪绅士、伪清纯、伪矜持、伪社会责任、伪民族精神、伪公共利益、伪为民请命、伪历史人物、伪历史事件、伪一本正经、伪......--别和我咬文嚼字,上面列举的可能重复,明白就行,俺说过俺没上过多少学啦,哈哈!
        现在有两个词的频率很高啊,一个是专家,一个是道德--专家?谁认可的?就算是有人有机构认可,那么那人那机构有什么资格认可,还是怎么认可的。这几年倒是亲眼见到了一些所谓的老专家,一脸慈祥,干的却是的骗人的勾当,现在我一听人说“孩子,我都这么大岁数了,我能骗你嘛!”,我就怕得要死!再说道德,道德?这个概念可相当得大,大到我认为没有人有资格来谈道德--居然还有某专家声称说什么突破“道德底线”,我真是太佩服了,人家可不止知道什么是道德,人家连道德的边儿在哪里都知道!!佩服,我太佩服了!!!
        大学毕业,英语学了10多年,出来后大多数都是哑巴!!那些教育专家这么多年都在想什么!脸不红心不跳还在那里装什么狗屁专家,真恶心死我了!!--当然,不可能全是哑巴--但是大多数都是哑巴,结果大家还得再重学!
        我支持恶搞,我看恶搞挺好,恶搞说明人们再觉醒!不再甘心被愚弄!他可以让一些虚伪的东西无所遁形。用句东北话来说就是-少跟我装!大家互相鞭策互相反省,为了只是可以活的真实点--无论好与坏,关键是真实,爽快!
    11/8/2006

    《中华人民共和国商标法》-下列标志不得作为商标使用

    最近经常出现有人恶搞商标,哈哈,“泄停封”居然通过了,而“中央一套”居然被禁止了,看来“泄停封”是比不上“中央一套”啊!同样一个事情,有两种结论,也没什么可奇怪的了,哈哈哈哈哈哈哈哈哈哈哈哈哈哈......规则你们定,看我哈哈哈哈哈哈哈哈哈哈哈哈哈哈的好看吗

     

    备注:(摘抄自《中华人民共和国商标法》

    第十条 下列标志不得作为商标使用:

    (一)同中华人民共和国的国家名称、国旗、国徽、军旗、勋章相同或者近似的,以及同中央国家机关所在地特定地点的名称或者标志性建筑物的名称、图形相同的;

    (二)同外国的国家名称、国旗、国徽、军旗相同或者近似的,但该国政府同意的除外;

    (三)同政府间国际组织的名称、旗帜、徽记相同或者近似的,但经该组织同意或者不易误导公众的除外;

    (四)与表明实施控制、予以保证的官方标志、检验印记相同或者近似的,但经授权的除外;

    (五)同“红十字”、“红新月”的名称、标志相同或者近似的;

    (六)带有民族歧视性的;

    (七)夸大宣传并带有欺骗性的;

    (八)有害于社会主义道德风尚或者有其他不良影响的。

     我学上得少,真是看不懂耶!!!

     

    11/6/2006

    李敖台北市长竞选演说-看上去好像有些道理,不知道行不行

    各位市民:你们好!

    李敖来选台北市长,我不是来玩假的,我不学其它几位的玩法。我不会要求你们选我李敖是一次对陈水扁及民进党的不信任投票,我也不会象某些人那样扮可怜,我也查不到人家的水电费,我也不指责人家涉嫌“高捷弊案”,我更没有什么“三个承诺”。

    各位市民,整天就看这样的竞选表演,你们腻了没有?这些跟满足市民的公共需求有什么联系呢,在专制制度下,市长多数是贪官。在民主制度下,市长的要求只要是个清官就行了吗?清官跟有效提供公共服务有多大关系?市民需要的是一个能干的市长,不仅仅要一个能干的市长,而且要一个能干的警察局长,要一个能干的建设局长,要一个能干的环保局长,要一个能干的教育局长,要一个能干的劳工局长,要一个能干的消防局长……不仅仅是一个能干的局长,而且要有一大批能干的公务人员。这样才能给台北市民提供优质的服务。什么才是优质的服务?那就是:一个没有犯罪的城市,一个没有污染的城市,一个没有食物中毒、没有劣质商品的城市,一个没有贫困和失业的城市,一个建设有序规划合理的城市,一个没有火灾和传染病的城市……不仅仅是优质的服务,还要用尽可能少的钱办尽可能多的事,也就是要按最小成本的原则来建立政府,也就是效率。

    提供每一种公共事务的机构都是一个系统,一个系统的效率的不断提高必需对系统运行的程序不断地创新,这与赢利性企业的运行规律是一致的。比如:犯罪率的不断降低需要有更有效的犯罪预防机制、更有效的公民安全教育、更有效的巡逻服务、更有效的侦破手段、更及时的制止犯罪发生的反应能力、更快速的犯罪惩罚机制等。同时也要确保所支出的每一分钱没有被浪费掉。这一切的实现有赖于警察局长和法院院长的更有效的领导、做出更多最优决策。最优决策的出现有赖于两个前提,一是决策者也就是局长和院长必需是在全体公民中通过竞争的方式产生,任何缺乏充分竞争的方式任命的局长和院长都不可能是最优秀的决策者;二是局长和院长必需处在一种优胜劣汰的竞争环境下,其优秀才华才会被充分地激发出来。说到底,就是有竞争才能有进步。

    说到这里,有人就会说,我们现在也有竞争啊,我们的市长和市议员也是通过竞争产生的啊。但现实的情况也告诉我们,现在的这些所谓的选举所谓的竞争并不能触及我们需要解决的问题。在现存的政府模式下,竞争以两种方式展开。一是象你们在开头看到的,这些想当官的人整天就知道去找对手的花边新闻,去查他有没有过去的不良行为,以此来证明自已更清廉。第二就是给支持者做许诺,答应当选后会满足支持者的某些要求,会实施支持者需要的某些项目。这些项目通常不是全体人民所能享受到的利益。这就是现代民主所呈现的政治分肥。这种分肥与专制制度下一群人占有另一群人的财富的结果是一样的,所不同的是以前是以谁掌握枪杆子谁就能得到更多,而现在是谁赢得选举谁就能得到更多。

    现代政府的一个主要功能依然是财富再分配。这种功能的存在转移了创造财富的注意力。象前面所说的提高治安能力的行为是属于创造公共财富的行为,但如果有一个市长候选人只是提出一些提升警察效率的方案来做为竞选纲领,选民很难对其产生足够的兴趣,因为选民从一个理性的经济人的角度更倾向于选择能给他们带来特别利益的候选人。虽然这是以牺牲另一部份公众的利益为代价的。当然,如果一个候选人能提出政府各个领域多种公共事务的优化方案,使选民觉得这个候选人能带给他们的好处比任何特别利益都更大,这时人们会选择这个候选人。但是,这可能吗?现在台北市有20多个局和处的行政机构近八万名公职人员为二百多万台北市民提供服务,任何一个人都没有能力对许多方面的事务精通到超过每一个部们的官员,从而指出他们的不作为,证明他们的无能,由此证明现任市长的无能。而这种不可能又导致所有的候选人都成了纯粹的政客。

    什么是政客?就是那些只会从一个人的口袋里掏出钱来给另一个人的那种人。这些人对于市民所需要的各种更好的公共服务有什么帮助呢?没有。民主这东西是一个圈套:给你们自由选择领导人的权力,但只给一堆混蛋给你选。你去选吧,你选白了头也只能选到一个混蛋!你可以把一个很大的混蛋赶下台,接着再把一个还没长大的混蛋选上去,而影响我们公共生活的问题依然一大堆!

    怎么办?我们的出路在哪里?

    其实在前面的分析中已找到出路的方向了,那就是部门行政长官的直选。这样就能使竞选主题切入到具体的公共政策上来。一项可评估的完整的政策是既包括产出也包括投入的,要改善治安,同时也要计算其成本,这样才有可比性。作为投入环节的税收、财政、人事等部门就要分别纳入不同的公共事务部门如警察局、环保局等等。行政长官非政客化的同时,作为市政事务最高权力机关的市议会同样也要专业化,一个议员跟一个市长一样,也是不可能事事精通。所以,市民也要分别选举警察局议员、环保局议员等等。说到这里,我们就会发现,一种新的政府模式出现了。我们不再是只拥有一个市政府,而是拥有多个市政府:负责社区安全的市政府,负责环保的市政府,负责社会福利的市政府,负责产品和服务质量监督的市政府,负责水、火、疾病等灾害预防和控制的市政府,负责资产管理的市政府等等。

    当竞争和选择的层次降到具体的公共物品和服务的供应上时,绩效评价体系就能发挥作用,我们很难对一个一般性政府建立一套绩效评价体系来衡量市长的工作,但对一个环保局长、一个警察局长的绩效评价就可以做到。这样,局长们就必需比原来更努力提高他们的工作效率,因为竞争者将有可能对这个部门的所有运作进行更直接的分析,找出漏洞并告诉选民。竞争将在具体的政策和具体的实施方案的层面上展开,竞选表演就很难再取悦选民,执政者的创造力将在竞争的压力下被激发出来,公众可以选择到真正有能力的执政者。

    建立一个政府来处理一种公共事务,这本来是一个很简单的道理,就象我们建立一家企业来生产一类产品一样,我们不会去建立一个生产几十类产品的一家公司,因为那样是绝对没有效率的。其原因是因为我们生下来政府就是这个样子,所以我们就一直被误导着承认这种错误的政府构造。而这种政府正是历史上的专制统治者所发明的,是用来压迫和掠夺人民的一种手段。今天,是时侯解决这个问题了。

    这是一种功能型的事务性的政府,它将为我们的公共生活带来全新的面貌,我们将会有一个更好的治安,我们将会有一个更好的环境,我们将会有一个更好的城市,我们将会有一个更安全的未来,我们将会有一个更价廉物美的政府服务。

    还等什么,赶快投我李敖一票。

    你这一票也将改变下一次的市议员选举主题。你这一票将使支持政府本身的改革成为下一次市议员获得选票的策略。所有的市议员候选人都会从你这一票中看到民意的取向。这样,议会也就会尽早通过这一政府改革的议案。由此,台北市将成为一个历史的先行者。因为政府事务化的改革不仅适合于台北市,它也适合于台湾政府。不久的将来,我们会看到各自独立的国防政府、全台环保政府、全台灾害防控政府、全台社会保障政府、促进经济发展政府、司法政府、消费者利益保护政府、投资者利益保护政府等等。我们再也不会有倒扁运动,因为我们不会再授予任何一个人手握全部公共事务权力的机会,权力被广泛地分散在多个政府手中,而不仅仅是分散在同属一个政府的立委和行政官僚手中。个别政府的领导人出了问题不会引起广泛的抗议。台湾政府将成为全球最有效率也最公平的政府。由此,人类现代民主制度将从台湾开始一个新的时代---事务性政府的时代。现存的一般性政府的制度将开始成为历史。

    我以前是学历史的,今天,我李敖要做的是写历史,为五千年以后的人们写历史。当然,我一个人是写不成的,只有加上你们……伟大的台北市民的选票,才能写出美丽的篇章—美丽岛的篇章。

    谢谢各位,接下来是提问时间

    11/1/2006

    hate

    These days I have been in a bad mood,for nothing!I don't know for what?I hate that!