Apache Log4j 提供了多个 Layout 对象,每个根据布局的不同都可格式化日志数据。还可以创建一个 Layout 对象,以应用特有的方式格式化日志。所有 Layout 对象从 Appender 对象那里接收一个 LoggingEvent 对象,然后从 LoggingEvent 对象那里获取信息,并使用恰当的 ObjectRenderer 对象获取该信息的字符串形式。Layout 类型位于继承关系顶层的是抽象类 org.apache.Log4j.
org.apache.Log4j.Level 类定义了日志级别,您可通过继承 Level 类定制自己的级别。级别描述ALL所有级别,包括定制级别。DEBUG指明细致的事件信息,对调试应用最有用。ERROR指明错误事件,但应用可能还能继续运行。FATAL指明非常严重的错误事件,可能会导致应用终止执行。INFO指明描述信息,从粗粒度上描述了应用运行过程。OFF最高级别,用于关闭日志。
Logger 类提供了很多方法用来处理日志,Logger 类不允许初始化一个新的实例,但提供了两个静态方法用来获取 Logger 对象:public static Logger getRootLogger();public static Logger getLogger(String name);第一个方法返回应用实例没有名字的根日志。其他有名字的 Logger 对象通过传入日志的名字,调用第二个方法获得。
我们已经学会了如何创建配置文件,本章讲述如何生成调试信息,并将其写入一个简单的文本文件。下面是为我们的例子创建的一个简单配置文件,让我们再来复习一遍:定义根日志级别为 DEBUG,并将名为 FILE 的 appender 添加其上。appender FILE 定义为 org.apache.Log4j.FileAppender,它将日志写入 log 目录下一个名为 log.out 的文件中。
上一章解释了 Log4j 的核心组件。本章讲述如何使用配置文件来配置核心组件。Log4j 的配置包括在配置文件中指定 Level、定义 Appender 和指明 Layout。Log4j.properties 文件是 Log4j 的配置文件,属性以键值对的形式定义。默认情况下,LogManager 会在 CLASSPATH 中寻找 Log4j.properties 文件。根日志的级别定义为 DEBUG,并将名为 X 的 appender 添加其上。
Log4j API 采用分层架构,每一层有不同的对象,完成不同的任务。这种分层架构让设计变得灵活,且易于日后扩展。Log4j 里有两种类型的对象:核心对象:这是框架必需的对象,使用框架时必需用到它们。支持对象:这是框架的可选对象,它们支持核心对象做一些额外的,但并不重要的任务。
Log4j API 使用 Apache Software License 授权,该授权是经开源促进协会认证的、完整的开源协议。最新版本的 Log4j,连同其代码、类文件和文档可通过 http://logging.apache.org/log4j/ 获取。从上述地址下载 apache-Log4j-x.x.x.tar.gz 文件,按照下面的步骤安装 Log4j。第一步将所下载文件解压至 /usr/local/ 目录:$ gunzip apache-log4j-1.2.15.tar.
Log4j 是一个使用 Java 语言编写的,可靠、快速、灵活的日志框架(API),使用 Apache Software License 授权。它被移植到 C、C++、C#、Perl、Python、Ruby 和 Eiffel 语言中。Log4j 是高度可配置的,在运行期使用外部的配置文件对其进行配置。它按照优先级别记录日志,并可将日志信息定向输出到各种介质,比如数据库、文件、控制台、Unix Syslog等。
Log4j 是一个使用 Java 语言编写的,可靠、快速、灵活的日志框架(API),使用 Apache Software License 授权。Log4j 是一个使用 Java 语言编写的流行类库,它被移植到 C、C++、C#、Perl、Python、Ruby 和 Eiffel 语言中。适用人群该教程适用于初学者,帮助他们掌握 Log4j 的基本功能。
博客基本建好了, 未来我们还有更多的工作要做:将view封装到类中重写增删改查代码重写前段模板重新设计数据库关系自定义留言板(连接数据库)添加注册/登陆功能(Form)做成社区(更多设计思考)...
RSS功能Django是一个全面型框架, 很多功能都可以直接找到, 对于RSS功能, 可以从其中的高层框架的聚合Feed框架中找到(The syndication feed framework)上层Feed生成框架可以直接应用Feed类, 我们可以直接继承Feed在其中定义自己的方法在my_blog/article/views.py中定义类 from django.contrib.syndication.
搜索功能搜索功能的实现设计:前段界面输入搜索关键字, 传送到对应view中在对应的view中进行数据库关键字搜索这里搜索可以只对文章名搜索或者全文搜索首先在my_blog/templates下添加所有输入框<div class="sidebar pure-u-1 pure-u-md-1-4"> <div class="header"> <h1 class="brand-title"><a href="{% url 'home' %}">
这一章节说的东西都是一些知识回顾,归档归档就是列出当前博客中所有的文章, 并且能够显示时间, 很容易的可以写出对应的view和模板来在my_blog/my_blog/view下新建归档view def archives(request) : try: post_list = Article.objects.all() except Article.
添加多说在Django1.5版本前是有内置的评论系统的, 不过现在已经放弃使用了, 在国内比较常用的是多说, 在国外是disqus, 因为文章主要面对 国内用户, 所以采用多说在网站上注册账号或者直接用社交账号进行登录,并会生成一个short_name, 可以在个人界面中的工具中找到一段通用代码, 这段代码非常重要, 用于多说评论框的代码段:<!-- 多说评论框 start --> <
运行已经做好的博客框架, 会发现一个问题, 只有一个主页的空盒子, 而大部分时候我们希望能够让每篇博客文章都有一个独立的页面.
Template初探到目前为止我们只是简单的将后端数据显示到页面上, 没有涉及到HTML代码, 而优雅的网站总算通过CSS+HTML, 甚至还有强大的JS的支持.在这个教程中要打造一个Blog, 所以我们设置一个Blog界面, 原本打算使用Bootstrap作为前段的工具, 不过经过@游逸的建议, 使用了更加轻量级的[Pure][1], 同样是响应式页面设置, 这也将是未来的主流吧..
网页程序的逻辑request进来->从服务器获取数据->处理数据->
Admin简介Django有一个优秀的特性, 内置了Django admin后台管理界面, 方便管理者进行添加和删除网站的内容.设置Admin新建的项目系统已经为我们设置好了后台管理功能可以在my_blog/my_blog/setting.py中查看 INSTALLED_APPS = ( 'django.contrib.admin', #默认添加后台管理功能 'django.contrib.auth', 'django.contrib.
Django Model每一个Django Model都继承自django.db.models.Model在Model当中每一个属性attribute都代表一个database field通过Django Model API可以执行数据库的增删改查, 而不需要写一些数据库的查询语句设置数据库Django项目建成后, 默认设置了使用SQLite数据库, 在my_blog/my_blog/setting.
项目创建现在正式开始吧, 我们创建一个名为my_blog的Django项目创建项目的指令如下: $ django-admin.py startproject my_blog现在来看一下整个项目的文件结构 $ tree my_blog #打印树形文件结构 my_blog ├── manage.py └── my_blog ├── __init__.py ├── settings.py ├── urls.py └── wsgi.
关注时代Java