Rsyslog配置文件详解(转)

最近在搭建日志审计服务器,使用了rsyslog,发现这篇文章很有用,收藏一下。

原文链接:http://my.oschina.net/0757/blog/198329

具体内容:

非常详细的rsyslogd配置文件解析

rsyslog

rsyslog服务和logrotate服务

======================================================================

rsyslog 是一个 syslogd 的多线程增强版。

现在Fedora和Ubuntu, rhel6默认的日志系统都是rsyslog了

rsyslog负责写入日志, logrotate负责备份和删除旧日志, 以及更新日志文件

———————————————————————-

rsyslog 服务

———————————————————————-

软件包:

[root@centos ~]# yum install rsyslog rsyslog-mysql  logrotate

查看当前rsyslog服务的状态:

[root@centos ~]#/etc/init.d/rsyslog status

rsyslogd (pid  1343) is running…

在centos6中, rsyslog服务默认是开机启动的

我们先看一下它的进程::

[root@centos ~]# ps -ef | grep rsyslogd | grep -v grep

root      1343    1  0 12:09 ?        00:00:00 /sbin/rsyslogd -c 4

从上面命令的输出结果看到rsyslog执行时使用的参数是-c 4.

它的意思是指定rsyslog运行(兼容)的版本号, 这个参数必须是第一个参数, 当然也可以省略, 默认为-c0, (命令行兼容sysklogd)

这个参数是在文件/etc/sysconfig/rsyslog中指定::

[root@centos ~]# cat /etc/sysconfig/rsyslog

  1. # Options to syslogd
  2. # syslogd options are deprecated since rsyslog v3
  3. # if you want to use them, switch to compatibility mode 2 by “-c 2″
  4. SYSLOGD_OPTIONS=”-c 4″

[root@centos ~]# chkconfig –list | grep rsyslog

rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off

注意,这里的服务名是rsyslog!

———————————————————————-

配置文件

———————————————————————-

/etc/rsyslog.conf

配置文件的基本信息

配置文件中有很多内容, 但最主要的是指定需要记录哪些服务和需要记录什么等级的信息::

cat /etc/rsyslog.conf

  1. #rsyslog v3 config file
  2. # if you experience problems, check
  3. # http://www.rsyslog.com/troubleshoot for assistance
  4. #### MODULES ####    加载 模块
  5. $ModLoad imuxsock.so  –> 模块名    # provides support for local system logging (e.g. via logger command) 本地系统日志
  6. $ModLoad imklog.so                    # provides kernel logging support (previously done by rklogd)
  7. #$ModLoad immark.so              # provides –MARK– message capability
  8. # Provides UDP syslog reception
  9. # 允许514端口接收使用UDP协议转发过来的日志
  10. #$ModLoad imudp.so
  11. #$UDPServerRun 514
  12. # Provides TCP syslog reception
  13. # 允许514端口接收使用TCP协议转发过来的日志
  14. #$ModLoad imtcp.so
  15. #$InputTCPServerRun 514
  16. #### GLOBAL DIRECTIVES ####
  17. 定义日志格式默认模板
  18. # Use default timestamp format
  19. $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
  20. # File syncing capability is disabled by default. This feature is usually not required,
  21. # not useful and an extreme performance hit
  22. #$ActionFileEnableSync on
  23. #### RULES ####
  24. # Log all kernel messages to the console.
  25. # Logging much else clutters up the screen.
  26. #kern.*                                                 /dev/console    关于内核的所有日志都放到/dev/console(控制台)
  27. # Log anything (except mail) of level info or higher.
  28. # Don’t log private authentication messages!
  29. # 记录所有日志类型的info级别以及大于info级别的信息到/var/log/messages,但是mail邮件信息,authpriv验证方面的信息和cron时间任务相关的信息除外
  30. *.info;mail.none;authpriv.none;cron.none                /var/log/messages
  31. # The authpriv file has restricted access.
  32. # authpriv验证相关的所有信息存放在/var/log/secure
  33. authpriv.*                                              /var/log/secure
  34. # Log all the mail messages in one place.
  35. # 邮件的所有信息存放在/var/log/maillog; 这里有一个-符号, 表示是使用异步的方式记录, 因为日志一般会比较大
  36. mail.*                                                  -/var/log/maillog
  37. # Log cron stuff
  38. # 计划任务有关的信息存放在/var/log/cron
  39. cron.*                                                  /var/log/cron
  40. # Everybody gets emergency messages
  41. # 记录所有的大于等于emerg级别信息, 以wall方式发送给每个登录到系统的人
  42. *.emerg                                                 *                  *代表所有在线用户
  43. # Save news errors of level crit and higher in a special file.
  44. # 记录uucp,news.crit等存放在/var/log/spooler
  45. uucp,news.crit                                          /var/log/spooler
  46. # Save boot messages also to boot.log     启动的相关信息
  47. local7.*                                                /var/log/boot.log
  48. #:rawmsg, contains, “sdns_log” @@192.168.56.7:10514
  49. #:rawmsg, contains, “sdns_log” ~
  50. # ### begin forwarding rule ###  转发规则
  51. # The statement between the begin … end define a SINGLE forwarding
  52. # rule. They belong together, do NOT split them. If you create multiple
  53. # forwarding rules, duplicate the whole block!
  54. # Remote Logging (we use TCP for reliable delivery)
  55. #
  56. # An on-disk queue is created for this action. If the remote host is
  57. # down, messages are spooled to disk and sent when it is up again.
  58. #$WorkDirectory /var/spppl/rsyslog # where to place spool files
  59. #$ActionQueueFileName fwdRule1 # unique name prefix for spool files
  60. #$ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
  61. #$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
  62. #$ActionQueueType LinkedList   # run asynchronously
  63. #$ActionResumeRetryCount -1    # infinite retries if host is down
  64. # remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
  65. #*.* @@remote-host:514                    # @@表示通过tcp协议发送    @表示通过udp进行转发
  66. #local3.info  @@localhost :514
  67. #local7.*                                    #            @@192.168.56.7:514
  68. # ### end of the forwarding rule ###

格式::

日志设备(类型).(连接符号)日志级别   日志处理方式(action)

日志设备(可以理解为日志类型):

———————————————————————-

auth        –pam产生的日志

authpriv    –ssh,ftp等登录信息的验证信息

cron        –时间任务相关

kern        –内核

lpr         –打印

mail        –邮件

mark(syslog)–rsyslog服务内部的信息,时间标识

news        –新闻组

user        –用户程序产生的相关信息

uucp        –unix to unix copy, unix主机之间相关的通讯

local 1~7   –自定义的日志设备

日志级别:

———————————————————————-

debug       –有调式信息的,日志信息最多

info        –一般信息的日志,最常用

notice      –最具有重要性的普通条件的信息

warning     –警告级别

err         –错误级别,阻止某个功能或者模块不能正常工作的信息

crit        –严重级别,阻止整个系统或者整个软件不能正常工作的信息

alert       –需要立刻修改的信息

emerg       –内核崩溃等严重信息

none        –什么都不记录

从上到下,级别从低到高,记录的信息越来越少

详细的可以查看手册: man 3 syslog

连接符号

———————————————————————-

.xxx: 表示大于等于xxx级别的信息

.=xxx:表示等于xxx级别的信息

.!xxx:表示在xxx之外的等级的信息

Actions

———————————————————————-

1. 记录到普通文件或设备文件::

*.*     /var/log/file.log   # 绝对路径

*.*     /dev/pts/0

测试: logger -p local3.info ‘KadeFor is testing the rsyslog and logger ‘   logger 命令用于产生日志

2. 转发到远程::

*.* @192.168.0.1            # 使用UDP协议转发到192.168.0.1的514(默认)端口

*.* @@192.168.0.1:10514     # 使用TCP协议转发到192.168.0.1的10514(默认)端口

3. 发送给用户(需要在线才能收到)::

*.*   root

*.*   root,kadefor,up01     # 使用,号分隔多个用户

*.*   *     # *号表示所有在线用户

4. 忽略,丢弃::

local3.*   ~    # 忽略所有local3类型的所有级别的日志

5. 执行脚本::

local3.*    ^/tmp/a.sh      # ^号后跟可执行脚本或程序的绝对路径

# 日志内容可以作为脚本的第一个参数.

# 可用来触发报警

.. note::

日志记录的顺序有先后关系!

======================================================================

一个标准的简单的配置文件

======================================================================

::

*.info;mail.none;authpriv.none;cron.none      /var/log/messages

authpriv.*                                    /var/log/secure

mail.*                                        /var/log/maillog

cron.*                                        /var/log/cron

*.emerg                                       *

uucp,news.crit                                /var/log/spooler

local7.*                                      /var/log/boot.log

======================================================================

实例: 指定日志文件, 或者终端

======================================================================

[[email protected] ule-sa3]# vi /etc/rsyslog.conf

[[email protected] ule-sa3]# grep local3 !$

grep local3 /etc/rsyslog.conf

local3.*                                                /var/log/local3.log

[[email protected] ule-sa3]# rm -rf /var/log/local3.log

[[email protected] ule-sa3]# /etc/init.d/rsyslog reload

Reloading system logger…                                 [  OK  ]

[[email protected] ule-sa3]# ls /var/log/local3.log

/var/log/local3.log

[[email protected] ule-sa3]# logger -t ‘LogTest’ -p local3.info ‘KadeFor is testing the rsyslog and logger’

[[email protected] ule-sa3]# cat /var/log/local3.log

Jun 10 04:55:52 kadefor LogTest: KadeFor is testing the rsyslog and logger

[[email protected] ule-sa3]#

自己实验日志发送给某个终端

======================================================================

实例:  过滤特定的日志到文件, 忽略(丢弃)包含某个字符串的日志

======================================================================

# 过滤日志, 由:号开头

:msg, contains, “error” /var/log/error.log

:msg, contains, “error” ~         # 忽略包含error的日志

:msg, contains, “user nagios”   ~

:msg, contains, “user kadefor”   ~

:msg, contains, “module-alsa-sink.c: ALSA woke us up to write new data to the device, but there was actually nothing to write” ~

local3.*    ~

PS.

&   ~       # 忽略所有的日志

把包含’oracle’的日志保存在/var/log/oracle.log

======================================================================

实例:  使用模板来定义日志格式

======================================================================

定义默认的日志格式:

  1. $template myFormat,”%rawmsg%\n”
  2. $ActionFileDefaultTemplate myFormat
  3. #如果不要$ActionFileDefaultTemplate myFormat这一行, 就需要像这样来使用模板:
  4. #在日志文件后添加模板名, 并用;号分隔
  5. $template myFormat,”%rawmsg%\n”
  6. # The authpriv file has restricted access.
  7. authpriv.*      /var/log/secure;myFormat
  8. # Log all the mail messages in one place.
  9. mail.*          /var/log/maillog;myFormat
  10. # Log cron stuff
  11. cron.*          /var/log/cron;myFormat
  12. # Everybody gets emergency messages
  13. *.emerg                                       *
  14. # Save news errors of level crit and higher in a special file.
  15. uucp,news.crit  /var/log/spooler;myFormat
  16. # Save boot messages also to boot.log
  17. local7.*        /var/log/boot.log;myFormat

======================================================================

实例: remote log 远程发送与接收:

======================================================================

如果要修改为非514的端口, 需要设置selinux

只要在rsyslog.conf中加入

*.* @192.168.0.10

*.* @192.168.0.10:10514     # 带端口号

*.* @@192.168.0.10      # TCP

但是没有定义保存在远程的哪一个文件啊?

其实保存在什么文件, 那是远程日志服务器接收到日志之后它自己的事情了.

例1:

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

———————————————————————-

Client(send):

———————————————————————-

::

local3.*   @@192.0.2.1:10514

# if you need to forward to other systems as well, just

# add additional config lines:

# *.*   @@other-server.example.net:10514

# Log anything (except mail) of level info or higher.

# Don’t log private authentication messages!

*.info;mail.none;authpriv.none;cron.none      /var/log/messages

# The authpriv file has restricted access.

authpriv.*                                    /var/log/secure

# Log all the mail messages in one place.

mail.*                                        /var/log/maillog

# Log cron stuff

cron.*                                        /var/log/cron

# Everybody gets emergency messages

*.emerg                                       *

# Save news errors of level crit and higher in a special file.

uucp,news.crit                                /var/log/spooler

# Save boot messages also to boot.log

local7.*                                      /var/log/boot.log

———————————————————————-

Server(receive): <1>

———————————————————————-

::

# for TCP use:

$modload imtcp

$InputTCPServerRun 10514

# for UDP use:

$modload imudp

$UDPServerRun 514

# Log anything (except mail) of level info or higher.

# Don’t log private authentication messages!

*.info;mail.none;authpriv.none;cron.none      /var/log/messages

# The authpriv file has restricted access.

authpriv.*                                    /var/log/secure

# Log all the mail messages in one place.

mail.*                                        /var/log/maillog

# Log cron stuff

cron.*                                        /var/log/cron

# Everybody gets emergency messages

*.emerg                                       *

# Save news errors of level crit and higher in a special file.

uucp,news.crit                                /var/log/spooler

# Save boot messages also to boot.log

local7.*                                      /var/log/boot.log

local3.*    /var/log/local3.log     # 测试用

例2 (仅做了解, 不做要求)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

#配置服务端(接收)

———————————————————————-

vi /etc/rsyslog.conf        #在文件开始加上,同时确保514端口能够被客户端用tcp访问

$ModLoad imtcp.so              # needs to be done just once #使用tcp方式

$InputTCPMaxSessions 500    # tcp接收连接数为500个

$InputTCPServerRun 514      # tcp接收信息的端口

$template logformat,”%TIMESTAMP:::date-mysql% %FROMHOST-IP%%msg%\n”     # 定义一个名为logformat模板, 为信息加上日志时间

$template DynFile,”/var/log/tlog%$year%%$month%%$day%.log”     # 定义日志文件的名称,按照年月日

:rawmsg, contains, “sdns_log” ?DynFile;logformat    # 把rawmsg(也可以使用msg)日志中包含sdns_log标志的信息写到DynFile定义的日志文件里

:rawmsg, contains, “sdns_log”  ~                     # 这个表示丢弃包含sdns_log标志的信息, 一般都加上它, 以免多个日志文件记录重复的日志

#配置客户端(发送)

———————————————————————-

vi /etc/rsyslog.conf  #在文件开始加上

#把包含sdns_log的信息通过tcp发到192.168.1.2 @@表示tcp @表示udp

:rawmsg, contains, “sdns_log”       @@192.168.1.2       # 默认514端口

#这个表示丢弃包含sdns_log标志的信息,防止这个信息写到本机的/var/log/message

:rawmsg, contains, “sdns_log”       ~

#测试

———————————————————————-

在客户端上执行

logger -p user.info “sdns_log 34334″

在服务端的/var/log/目录里是否有tlog*日志产生

补充:

———————————————————————-

如果要把不同服务器发送过来的日志保存到不同的文件, 可以这样操作:

:fromhost-ip, isequal, “192.168.0.160″ /var/log/host160.log

:FROMHOST-IP, isequal, “192.168.0.161″ /var/log/host161.log

:FROMHOST-IP, startswith, “192.168.1.” /var/log/network1.log

:FROMHOST-IP, startswith, “192.168.2.” /var/log/network2.log

练习:

======================================================================

1. 实现把ssh服务的日志自定义保存到/var/log/newsshd.log (先不做)

2. mail日志保存在远程日志服务器/var/log/newmail.log

3. 过滤日志, 如果日志包含有”daydayup”, 则执行脚本/tmp/a.sh

脚本内容:

#!/bin/bash

echo  “KO::** $1″ > /dev/tty2

======================================================================

logrotate服务

======================================================================

rotate 轮换,日志切换

logrotate服务的启动方式

logrotate是一个日志管理程序,用来把旧的日志文件删除(备份),并创建新的日志文件,这个过程称为“转储”。我们可以根据日志的大小,或者根据其使用的天数来转储。

logrotate 的执行由crond服务实现。在/etc/cron.daily目录中,有个文件logrotate,它实际上是个shell
script,用来启动logrotate。logrotate程序每天由cron在指定的时间(/etc/crontab)启动。

因此,使用ps是无法查看到logrotate的。如果它没有起来,就要查看一下crond服务有没有在运行。

在执行logrotate时,需要指定其配置文件/etc/logrotate.conf


个配置文件的注释写得很清楚,没有必要再罗嗦了。只想强调下面这行,它的作用包含存放在/etc/logrotate.d目录下面的配置文件,不可或缺。
如果你安装了一个新的服务,它的日志转储的规则可以建立一个专门的配置文件,放在/etc/logrotate.d下面。它其实也因为下面的这句话,在
logrotate服务启动时被读取。

每个存放在/etc/logrotate.d目录里的文件,都有上面格式的配置信息。在{}中定义的规则,如果与logrotate.conf中的冲突,以/etc/logrotatate.d/中的文件定义的为准。

logrotate启动脚本放在 /etc/cron.daily/logrotate 中,可人工执行命令进行测试:

/usr/sbin/logrotate -f /etc/logrotate.conf

dateext表示转储文件会以日期来结束*

::

[[email protected] log]# vim /etc/logrotate.conf

# see “man logrotate” for details

# rotate log files weekly

weekly          –每周轮转一次

# keep 4 weeks worth of backlogs

rotate 4        –保留四个

# create new (empty) log files after rotating old ones

create          –rotate后,创建一个新的空文件

# uncomment this if you want your log files compressed

#compress       –默认是不压缩的

# RPM packages drop log rotation information into this directory

include /etc/logrotate.d        –这个目录下面配置文件生效

# no packages own wtmp — we’ll rotate them here

/var/log/wtmp {             –定义/var/log/wtmp这个日志文件

monthly                 –每月轮转一次,取代了上面的全局设定的每周轮转一次

minsize 1M              –定义日志必须要大于1M大小才会去轮转

create 0664 root utmp   –新的日志文件的权限,属主,属主

rotate 1                –保留一个,取代了上面的全局设定的保留四个

}

/var/log/btmp {

missingok       –如果日志丢失, 不报错

monthly

create 0600 root utmp

rotate 1

}

::

# sample logrotate configuration file

compress

# 全局设置, 压缩

/var/log/messages {

rotate 5     # 保留5份日志

weekly       # 每周轮换一次

postrotate   # 轮换之后重启syslogd服务

/usr/bin/killall -HUP syslogd

# rhel6中为:/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true

# 可查看/etc/logrotate.d/下的配置文件

endscript

}

“/var/log/httpd/access.log” /var/log/httpd/error.log {   #  指定多个文件, 如果有特殊字符需要用单引号

rotate 5

mail [email protected]

size 100k        # 超过100k后切换日志, 并把老的日志发送邮件给[email protected]

sharedscripts    # 共享脚本. 下面的postrotate脚本只运行一次.

postrotate

/usr/bin/killall -HUP httpd

endscript

}

/var/log/news/* {    # 少用通配符, 因会它会包括已经切换过的日志, 要用的话最好在*号后加上扩展名, 如*.log

monthly

rotate 2

olddir /var/log/news/old

missingok

postrotate

kill -HUP ‘cat /var/run/inn.pid‘

endscript

nocompress

}

例:

修改/etc/logrotate.conf

/var/log/wtmp {

monthly

minsize 10k

create 0664 a b

rotate 2

}

logrotate -f /etc/logrotate.conf  –强制轮转

logrotate -vf /etc/logrotate.conf    –再加一个-v参数查看轮转的过程

———————————

[[email protected] log]# vim /etc/logrotate.d/syslog

/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {

sharedscripts   –表示切换时脚本只执行一次

postrotate      –表示rotate后执行的脚本

/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true

/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true

endscript       –表示脚本结束

}

[[email protected] log]# logger -t ‘aaaa’ ‘bbbbbb’–在日志里加一个内容tag和内容

[[email protected] log]# tail /var/log/messages

Jun 12 19:38:55 kadefor dhclient[3166]: bound to 192.168.1.101 — renewal in 3384 seconds.

Jun 12 20:34:22 kadefor aaaa: bbbbbb

时间: 2024-08-24 00:23:12

Rsyslog配置文件详解(转)的相关文章

手工配置rsyslog配置文件详解

手工配置 如果您无法通过脚本生成配置文件,这份指导将帮助您通过简单的复制.粘贴手动完成配置. 假定您已拥有root或sudo权限,是在通用的Linux平台使用5.8.0或更高版本的rsyslog,rsyslog能接收本地系统日志,并通过5140端口与外界连接. 1 配置系统环境 粘贴以下脚本并运行,并且保证 /var/spool/rsyslog 目录已存在,如果是Ubuntu系统,还需要对目录进行权限设置. sudo mkdir -v /var/spool/rsyslog if [ "$(gre

Rsyslog配置文件详解

rsyslog服务和logrotate服务======================================================================rsyslog 是一个 syslogd 的多线程增强版.现在Fedora和Ubuntu, rhel6默认的日志系统都是rsyslog了rsyslog负责写入日志, logrotate负责备份和删除旧日志, 以及更新日志文件------------------------rsyslog 服务--------------

haproxy 安装与配置文件详解

本文主要阐述haproxy的安装配置详解,对于它的概念,作用,功能,和其它LB软件的区别,优点,缺点等不再进行说明. 一. haproxy 的安装配置 # cat /etc/redhat-release CentOS release 6.6 (Final) # uname -r 2.6.32-504.el6.i686 # tar xf haproxy-1.3.20.tar.gz # cd haproxy-1.3.20 #  make  TARGET=linux26  PREFIX=/usr/lo

监控服务 - Nagios配置文件详解

一.Nagios的配置文件类型: Nagios安装后有四种默认的配置文件:主配置文件.CGI配置文件.资源定义文件.对象定义文件.这些配置文件间具有一些关系,只有充分理解各配置文件,才能使得配置Nagios服务如行云流水. 二.Nagios配置文件详解: 1.主配置文件(nagios.cfg): Nagios的主配置文件是用来定义Nagios服务的基本参数信息的,其中包括:对象定义文件的声明.CGI配置文件的声明.资源定义文件的声明等.其常用参数如下: log_file=/usr/local/n

Hadoop1.2.1 配置文件详解

首先我们先回顾一下Hadoop的一些概念: Apache Hdoop 1.x 组成 NameNode(元数据服务器) Secondary NameNode(辅助元数据服务器) JobTracker(任务调度员) DataNodes(块存储) TaskTrackers(任务执行) HDFS文件系统 NameNoode:属于管理层,用于管理数据存储 SecondaryNameNode:也属于管理层,辅助NameNode进行管理 DataNode:属于应用层,用户进行数据的存储,被NameNode进行

ThinkPHP源码阅读2-----C函数配置文件详解

ThinkPHP的配置非常灵活,可自定义加载.大概看了一下,一共有这几个地方会加载配置文件,方便以后的读取 /** * 获取和设置配置参数 支持批量定义 * * @param string|array $name * 配置变量 * @param mixed $value * 配置值 * @return mixed */ function C($name = null, $value = null) { static $_config = array (); // 无参数时获取所有 if (emp

Zabbix配置文件详解之服务端——zabbix_server

作为zabbix的部署,这里就不说了,网上一大堆文档,但关于配置文件的说明就比较少,这里列出服务端的配置文件zabbix_server的详细解释,感谢我主管的功劳. Zabbix Server端配置文件说明 # This is a configuration file for Zabbix Server process # To get more information about Zabbix, # visit http://www.zabbix.com ############ GENERA

Spring AOP注解通过@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入属性的配置文件详解

原创整理不易,转载请注明出处:Spring AOP注解通过@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入属性的配置文件详解 代码下载地址:http://www.zuidaima.com/share/1772661373422592.htm 本文介绍了使用Spring注解注入属性的方法.使用注解以前,注入属性通过类以及配置文件来实现.现在,注入属性可以通过引入@Autowired注解,或者@Resource,@Qualifi

[转]Web.config配置文件详解(新手必看)

本文转自:http://www.cnblogs.com/gaoweipeng/archive/2009/05/17/1458762.html 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以