用日志打印出自己的头像logo

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.lang.reflect.Constructor;
import java.net.ConnectException;
import java.net.Socket;
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.logging.LogManager;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.LifecycleState;
import org.apache.catalina.Server;
import org.apache.catalina.security.SecurityConfig;
import org.apache.juli.ClassLoaderLogManager;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.ExceptionUtils;
import org.apache.tomcat.util.digester.Digester;
import org.apache.tomcat.util.digester.RuleSet;
import org.apache.tomcat.util.log.SystemLogHandler;
import org.apache.tomcat.util.res.StringManager;
import org.xml.sax.InputSource;
import org.xml.sax.SAXParseException;public class Catalina
{protected static final StringManager sm = StringManager.getManager("org.apache.catalina.startup");protected boolean await = false;protected String configFile = "conf/server.xml";protected ClassLoader parentClassLoader = Catalina.class.getClassLoader();protected Server server = null;protected boolean useShutdownHook = true;protected Thread shutdownHook = null;protected boolean useNaming = true;private static final Log log = LogFactory.getLog(Catalina.class);public Catalina(){setSecurityProtection();}public void setConfigFile(String file){this.configFile = file;}public String getConfigFile(){return this.configFile;}public void setUseShutdownHook(boolean useShutdownHook){this.useShutdownHook = useShutdownHook;}public boolean getUseShutdownHook(){return this.useShutdownHook;}public void setParentClassLoader(ClassLoader parentClassLoader){this.parentClassLoader = parentClassLoader;}public ClassLoader getParentClassLoader() {if (this.parentClassLoader != null) {return this.parentClassLoader;}return ClassLoader.getSystemClassLoader();}public void setServer(Server server) {this.server = server;}public Server getServer(){return this.server;}public boolean isUseNaming(){return this.useNaming;}public void setUseNaming(boolean useNaming){this.useNaming = useNaming;}public void setAwait(boolean b) {this.await = b;}public boolean isAwait() {return this.await;}protected boolean arguments(String[] args){boolean isConfig = false;if (args.length < 1) {usage();return false;}for (int i = 0; i < args.length; i++)if (isConfig) {this.configFile = args[i];isConfig = false;} else if (args[i].equals("-config")) {isConfig = true;} else if (args[i].equals("-nonaming")) {setUseNaming(false); } else {if (args[i].equals("-help")) {usage();return false;}if (!args[i].equals("start")){if (!args[i].equals("configtest")){if (!args[i].equals("stop")){usage();return false;}}}}return true;}protected File configFile(){File file = new File(this.configFile);if (!file.isAbsolute()) {file = new File(Bootstrap.getCatalinaBase(), this.configFile);}return file;}protected Digester createStartDigester(){long t1 = System.currentTimeMillis();Digester digester = new Digester();digester.setValidating(false);digester.setRulesValidation(true);HashMap fakeAttributes = new HashMap();ArrayList attrs = new ArrayList();attrs.add("className");fakeAttributes.put(Object.class, attrs);digester.setFakeAttributes(fakeAttributes);digester.setUseContextClassLoader(true);digester.addObjectCreate("Server", "org.apache.catalina.core.StandardServer", "className");digester.addSetProperties("Server");digester.addSetNext("Server", "setServer", "org.apache.catalina.Server");digester.addObjectCreate("Server/GlobalNamingResources", "org.apache.catalina.deploy.NamingResourcesImpl");digester.addSetProperties("Server/GlobalNamingResources");digester.addSetNext("Server/GlobalNamingResources", "setGlobalNamingResources", "org.apache.catalina.deploy.NamingResourcesImpl");digester.addObjectCreate("Server/Listener", null, "className");digester.addSetProperties("Server/Listener");digester.addSetNext("Server/Listener", "addLifecycleListener", "org.apache.catalina.LifecycleListener");digester.addObjectCreate("Server/Service", "org.apache.catalina.core.StandardService", "className");digester.addSetProperties("Server/Service");digester.addSetNext("Server/Service", "addService", "org.apache.catalina.Service");digester.addObjectCreate("Server/Service/Listener", null, "className");digester.addSetProperties("Server/Service/Listener");digester.addSetNext("Server/Service/Listener", "addLifecycleListener", "org.apache.catalina.LifecycleListener");digester.addObjectCreate("Server/Service/Executor", "org.apache.catalina.core.StandardThreadExecutor", "className");digester.addSetProperties("Server/Service/Executor");digester.addSetNext("Server/Service/Executor", "addExecutor", "org.apache.catalina.Executor");digester.addRule("Server/Service/Connector", new ConnectorCreateRule());digester.addRule("Server/Service/Connector", new SetAllPropertiesRule(new String[] { "executor" }));digester.addSetNext("Server/Service/Connector", "addConnector", "org.apache.catalina.connector.Connector");digester.addObjectCreate("Server/Service/Connector/Listener", null, "className");digester.addSetProperties("Server/Service/Connector/Listener");digester.addSetNext("Server/Service/Connector/Listener", "addLifecycleListener", "org.apache.catalina.LifecycleListener");digester.addRuleSet(new NamingRuleSet("Server/GlobalNamingResources/"));digester.addRuleSet(new EngineRuleSet("Server/Service/"));digester.addRuleSet(new HostRuleSet("Server/Service/Engine/"));digester.addRuleSet(new ContextRuleSet("Server/Service/Engine/Host/"));addClusterRuleSet(digester, "Server/Service/Engine/Host/Cluster/");digester.addRuleSet(new NamingRuleSet("Server/Service/Engine/Host/Context/"));digester.addRule("Server/Service/Engine", new SetParentClassLoaderRule(this.parentClassLoader));addClusterRuleSet(digester, "Server/Service/Engine/Cluster/");long t2 = System.currentTimeMillis();if (log.isDebugEnabled()) {log.debug("Digester for server.xml created " + (t2 - t1));}return digester;}private void addClusterRuleSet(Digester digester, String prefix){Class clazz = null;Constructor constructor = null;try {clazz = Class.forName("org.apache.catalina.ha.ClusterRuleSet");constructor = clazz.getConstructor(new Class[] { String.class });RuleSet ruleSet = (RuleSet)constructor.newInstance(new Object[] { prefix });digester.addRuleSet(ruleSet);} catch (Exception e) {if (log.isDebugEnabled()) {log.debug(sm.getString("catalina.noCluster", new Object[] { e.getClass().getName() + ": " + e.getMessage() }), e);}else if (log.isInfoEnabled())log.info(sm.getString("catalina.noCluster", new Object[] { e.getClass().getName() + ": " + e.getMessage() }));}}protected Digester createStopDigester(){Digester digester = new Digester();digester.setUseContextClassLoader(true);digester.addObjectCreate("Server", "org.apache.catalina.core.StandardServer", "className");digester.addSetProperties("Server");digester.addSetNext("Server", "setServer", "org.apache.catalina.Server");return digester;}public void stopServer(){stopServer(null);}public void stopServer(String[] arguments){if (arguments != null) {arguments(arguments);}Server s = getServer();File file;Throwable localThrowable4;if (s == null){Digester digester = createStopDigester();file = configFile();try { FileInputStream fis = new FileInputStream(file); localThrowable4 = null;try { InputSource is = new InputSource(file.toURI().toURL().toString());is.setByteStream(fis);digester.push(this);digester.parse(is);}catch (Throwable localThrowable1){localThrowable4 = localThrowable1; throw localThrowable1;}finally{if (fis != null) if (localThrowable4 != null) try { fis.close(); } catch (Throwable x2) { localThrowable4.addSuppressed(x2); } else fis.close();  } } catch (Exception e) { log.error("Catalina.stop: ", e);System.exit(1); }}else{try {s.stop();} catch (LifecycleException e) {log.error("Catalina.stop: ", e);}return;}s = getServer();if (s.getPort() > 0) {try { Socket socket = new Socket(s.getAddress(), s.getPort()); file = null;try { OutputStream stream = socket.getOutputStream();localThrowable4 = null;try {String shutdown = s.getShutdown();for (int i = 0; i < shutdown.length(); i++) {stream.write(shutdown.charAt(i));}stream.flush();}catch (Throwable localThrowable2){localThrowable4 = localThrowable2; throw localThrowable2; } finally {  } } catch (Throwable localThrowable3) { file = localThrowable3; throw localThrowable3;}finally{if (socket != null) if (file != null) try { socket.close(); } catch (Throwable x2) { file.addSuppressed(x2); } else socket.close();  } } catch (ConnectException ce) { log.error(sm.getString("catalina.stopServer.connectException", new Object[] { s.getAddress(), String.valueOf(s.getPort()) }));log.error("Catalina.stop: ", ce);System.exit(1);} catch (IOException e) {log.error("Catalina.stop: ", e);System.exit(1);}} else {log.error(sm.getString("catalina.stopServer"));System.exit(1);}}public void load(){long t1 = System.nanoTime();initDirs();initNaming();Digester digester = createStartDigester();InputSource inputSource = null;InputStream inputStream = null;File file = null;try {file = configFile();inputStream = new FileInputStream(file);inputSource = new InputSource(file.toURI().toURL().toString());} catch (Exception e) {if (log.isDebugEnabled()) {log.debug(sm.getString("catalina.configFail", new Object[] { file }), e);}}if (inputStream == null) {try {inputStream = getClass().getClassLoader().getResourceAsStream(getConfigFile());inputSource = new InputSource(getClass().getClassLoader().getResource(getConfigFile()).toString());}catch (Exception e){if (log.isDebugEnabled()) {log.debug(sm.getString("catalina.configFail", new Object[] { getConfigFile() }), e);}}}if (inputStream == null) {try {inputStream = getClass().getClassLoader().getResourceAsStream("server-embed.xml");inputSource = new InputSource(getClass().getClassLoader().getResource("server-embed.xml").toString());}catch (Exception e){if (log.isDebugEnabled()) {log.debug(sm.getString("catalina.configFail", new Object[] { "server-embed.xml" }), e);}}}if ((inputStream == null) || (inputSource == null)) {if (file == null) {log.warn(sm.getString("catalina.configFail", new Object[] { getConfigFile() + "] or [server-embed.xml]" }));}else {log.warn(sm.getString("catalina.configFail", new Object[] { file.getAbsolutePath() }));if ((file.exists()) && (!file.canRead())) {log.warn("Permissions incorrect, read permission is not allowed on the file.");}}return;}try{inputSource.setByteStream(inputStream);digester.push(this);digester.parse(inputSource);} catch (SAXParseException spe) { log.warn("Catalina.start using " + getConfigFile() + ": " + spe.getMessage());return;} catch (Exception e) { log.warn("Catalina.start using " + getConfigFile() + ": ", e);return;}finally {try {inputStream.close();}catch (IOException localIOException3){}}getServer().setCatalina(this);getServer().setCatalinaHome(Bootstrap.getCatalinaHomeFile());getServer().setCatalinaBase(Bootstrap.getCatalinaBaseFile());initStreams();try{getServer().init();} catch (LifecycleException e) {if (Boolean.getBoolean("org.apache.catalina.startup.EXIT_ON_INIT_FAILURE")) {throw new Error(e);}log.error("Catalina.start", e);}long t2 = System.nanoTime();if (log.isInfoEnabled())log.info("Initialization processed in " + (t2 - t1) / 1000000L + " ms");}public void load(String[] args){try{if (arguments(args))load();}catch (Exception e) {e.printStackTrace(System.out);}}public void start(){if (getServer() == null) {load();}if (getServer() == null) {log.fatal("Cannot start server. Server instance is not configured.");return;}long t1 = System.nanoTime();try{getServer().start();} catch (LifecycleException e) {log.fatal(sm.getString("catalina.serverStartFail"), e);try {getServer().destroy();} catch (LifecycleException e1) {log.debug("destroy() failed for failed Server ", e1);}return;}long t2 = System.nanoTime();if (log.isInfoEnabled()) {log.info("                            .:=+=======+=====+==++=." );log.info("                            ===+=======+===+=======++:");log.info("                          :+===============+=+=======++.");log.info("                          :====+++====================.");log.info( "                           :==::::=:..::::=:==+=====+::");log.info( "                          .=.:.              ..::::==");log.info( "                          :::.        ...:.    ....:=.");log.info( "                          =::. .   ....:..:     ..::=.");log.info( "                          ::..    .:.:. . .:   .  ::+");log.info( "                          .=  ::===  . ....:.......==");log.info( "                        ...=  .. ...: :.  .:::==:..=.:           .   .");log.info( "                . ..    .  :   .:.:. =+ . ..:... .:. .        ... . ..");log.info( "               .. ...    ....   ::.. =.:.  .::.  .:  .      ..  .:....");log.info( "              :.:......   .... :=:.  .. .  :..  ....:     ..   :.  ..");log.info( "         .   .    .  ..    .......  ::.:.  :..  .:..      .    .:.  .   .");log.info( "       ..:  .:.. .          . .:..  .. .:  .:. ..:        ...   ....    .");log.info( "       .  ..:   ........     : .:. ..  .:   :::.:     .    .. ......   .");log.info( "       .   . .....     :     :...       :    :. .      :.  ..  ..: . ...");log.info( "      .    .   ..     ..     .:..   .   .  . .::.       =:      .  .   .");log.info( "        ::            .      .:. . .    .   ..:::     .  :+=.   .  .   .");log.info( "        :.  .   ..  . ..   .:..... .    .   :.:.::: ..    +*.   .... ..");log.info( "         . .:... .::       :...... .    .   ...=:.=.      .=:   ..  .");log.info( "          ..               :.....  .    .    . ::.:.        ..      .");log.info( "                            ::::       ..     . ::.  .    .    .      ..");log.info( "     .                       :        .::.       .:      .    .         ..");log.info( "    .       .          .   .=       ..   .:.      :.          .   .      .");log.info( "   .        .             ..       ...   ....      =:                    .");log.info( "   .                    .:.=      .         ..     .=:.                  ..");log.info( "  .                   .::.:.     .            .       ..                 ..");log.info( "  .                  .:...::.   :.            ..        ..            ..   .");log.info( "   ..........      .:::....    :  .             .        .:.     ........::.");log.info( "   ............. .::.......   .                ...       .  :.............:.");log.info( "   ......     .:::........  ..                   ..        ...:.. ......:::");log.info( "   ......   .::....:.....:..                      ..       .:....:::::....:");log.info( "  ......  .:............. ..                 .     .: ..  .:.:.:...:::.....:");log.info( " .....  .::......... ... ..        ..  . .  ..      .: ..:. .:......::::....:");log.info( "....  .:........::. .:  .           ..     .          : .. .......:..::...:.:.");log.info( ":.  .:....... ........ :.  .                       .   =:..........:.:::::.:::");log.info("Server startup in " + (t2 - t1) / 1000000L + " ms");}if (this.useShutdownHook) {if (this.shutdownHook == null) {this.shutdownHook = new CatalinaShutdownHook();}Runtime.getRuntime().addShutdownHook(this.shutdownHook);LogManager logManager = LogManager.getLogManager();if ((logManager instanceof ClassLoaderLogManager)) {((ClassLoaderLogManager)logManager).setUseShutdownHook(false);}}if (this.await) {await();stop();}}public void stop(){try{if (this.useShutdownHook) {Runtime.getRuntime().removeShutdownHook(this.shutdownHook);LogManager logManager = LogManager.getLogManager();if ((logManager instanceof ClassLoaderLogManager))((ClassLoaderLogManager)logManager).setUseShutdownHook(true);}}catch (Throwable t){ExceptionUtils.handleThrowable(t);}try{Server s = getServer();LifecycleState state = s.getState();if ((LifecycleState.STOPPING_PREP.compareTo(state) > 0) || (LifecycleState.DESTROYED.compareTo(state) < 0)){s.stop();s.destroy();}} catch (LifecycleException e) {log.error("Catalina.stop", e);}}public void await(){getServer().await();}protected void usage(){System.out.println("usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ]  { -help | start | stop }");}protected void initDirs(){String temp = System.getProperty("java.io.tmpdir");if ((temp == null) || (!new File(temp).isDirectory()))log.error(sm.getString("embedded.notmp", new Object[] { temp }));}protected void initStreams(){System.setOut(new SystemLogHandler(System.out));System.setErr(new SystemLogHandler(System.err));}protected void initNaming(){if (!this.useNaming) {log.info("Catalina naming disabled");System.setProperty("catalina.useNaming", "false");} else {System.setProperty("catalina.useNaming", "true");String value = "org.apache.naming";String oldValue = System.getProperty("java.naming.factory.url.pkgs");if (oldValue != null) {value = value + ":" + oldValue;}System.setProperty("java.naming.factory.url.pkgs", value);if (log.isDebugEnabled()) {log.debug("Setting naming prefix=" + value);}value = System.getProperty("java.naming.factory.initial");if (value == null) {System.setProperty("java.naming.factory.initial", "org.apache.naming.java.javaURLContextFactory");}else{log.debug("INITIAL_CONTEXT_FACTORY already set " + value);}}}protected void setSecurityProtection(){SecurityConfig securityConfig = SecurityConfig.newInstance();securityConfig.setPackageDefinition();securityConfig.setPackageAccess();}protected class CatalinaShutdownHook extends Thread{protected CatalinaShutdownHook(){}public void run(){try{if (Catalina.this.getServer() != null)Catalina.this.stop();}catch (Throwable ex){LogManager logManager;ExceptionUtils.handleThrowable(ex);Catalina.log.error(Catalina.sm.getString("catalina.shutdownHookFail"), ex);}finally{LogManager logManager;LogManager logManager = LogManager.getLogManager();if ((logManager instanceof ClassLoaderLogManager))((ClassLoaderLogManager)logManager).shutdown();}}}
}

avatar Logo相关推荐

  1. Python-pptx Table

    image Table对象 使用SlideShapes上的add_table()方法将Table对象添加到幻灯片. class pptx.table.Table 一个DrawingML表对象.不能直接 ...

  2. QrCode类生成二维码海报

    /*** 生成个人二维码* @param $virtual_id* @return bool* @throws \Endroid\QrCode\Exceptions\ImageTypeInvalidE ...

  3. Android面试宝典2022-(停止更新,请看面试专栏)

    Android面试宝典2020-持续更新 一.Java基础 1.java基本数据类型和引用类型 2.object equals和==的区别 equals和hashcode的关系? 3.static关键 ...

  4. Android最全面试题整理、还有Kotlin

    目录 1.理解线程间通信 2.工作者线程(workerThread)与主线程(UI线程)的理解 3.通过Handler在线程间通信的原理 4.子线程发消息到主线程进行更新 UI,除了 handler ...

  5. php实现自定义中间logo的微信小程序码

    php实现自定义中间logo的微信小程序码这里写自定义目录标题 小程序码生成的时候是默认使用小程序后台设置的小程序icon图片的,但是在有些场景我们可能要替换成我们自己想要的icon. 下面先放代码: ...

  6. Vue+element-ui上传logo图片到后端生成二维码展示到页面

    Vue+element-ui上传logo图片生成二维码展示到页面 该文章将介绍如何通过前端上传二维码logo图片在后台生成二维码,并将生成的二维码转换成Base64编码返回给前端在页面展示,用户扫码二 ...

  7. php生产自定义logo图的二维码

    public function makeNewQrCodeAction() { //获取用户头像并转string $avatarUrl = this−>req−>getQuery(′ava ...

  8. 【Logo】无奈的又做一回美工:图片矢量化+logo上传+联动显示

    前言 又是被要求改需求的一天,原本logo时一张图片,而且有百边确实比较丑爆了,然后我就改了改,成了下面的模样.这个power by的logo乍一看还是不错的哈 图片上传与存储 为了有一张贴合背景的图 ...

  9. phpqrcode 生成带logo的二维码

    phpqrcode是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,查看地址 http://phpqrcode.sourceforge.net 首先下载 phpq ...

最新文章

  1. 没有任何基础学编程从哪开始_没有任何的绘画基础,该怎么学绘画?
  2. 职责链模式(chain of responsibility)
  3. python的序列包括什么_一文读懂什么是序列 (sequence)
  4. 其他类型的链表和线性表的总结(一级)
  5. 数据分析基于朴素贝叶斯的书籍评价信息分类
  6. 配置静态IPV6 NAT-PT
  7. mysql @符号_MySQL 数值类型
  8. [android] 手机卫士设置向导页面
  9. 内网穿透工作笔记001---UDP通信_内网通信原理_P2P点对点通信原理
  10. 【Android 】【Monkey Demons】 针对性的进行稳定性测试
  11. Ubuntu20.04安装WPS
  12. onenote无法打开链接出现错误您的组织策略阻止我们为您完成此操作
  13. 实变函数自制笔记6:初识可测函数
  14. 糟糕之至的用户体验——JavaEye你怎么就这么贱!
  15. 《全民学乒乓》学习笔记
  16. 计算与背景反差较大显示明显的前景色
  17. 用VB操作注册表 [转]
  18. ie浏览器的html在哪里,windows10的ie在哪里?ie浏览器找不到怎么办
  19. 高等流体力学复习03
  20. 火狐浏览器无法载入配置文件

热门文章

  1. habor私有镜像仓库部署
  2. HDWiki的兼容性问题
  3. Android Apk瘦身方案1——R.java文件常量内联
  4. linux下tar命令解压缩,tar解压缩命令 Linux下的tar压缩解压缩命令详解
  5. ubuntu系统损坏修复_修复损坏的ubuntu gui
  6. 使用echarts实现系统性能动态监控(数据实时展示)
  7. mysql三表联合查询(员工表,部门表,工资表)
  8. Neo4j CQL - DELETE删除
  9. ARIMA模型的拖尾截尾问题
  10. 网上那些代理IP是哪儿来的