If you want to logging the access information for each provide service,you can turn on the accesslog switch,which like the access log of Apache.
Note: The size of the access log maybe too much,please check the disk capacity. Now I will show you how to config the access log.
<dubbo:protocol accesslog="true" .../>
The above configuration will turn on accesslog switch for all provide services,and logging the access log with logging framework(log4j/logback/slf4j...).You can config the logging framework of logger and appender for logging the access log.The simplest way is config logger name with dubbo.accesslog. The Example:
<appender name="accesslogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${loggingRoot}/accesslog/logging.log</file> <encoding>${loggingCharset}</encoding> <append>true</append> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${loggingRoot}/accesslog/%d{yyyyMMdd}/logging.log.%d{yyyyMMdd}%i.gz </FileNamePattern> <MaxHistory>15</MaxHistory> <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <MaxFileSize>1024MB</MaxFileSize> </TimeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern><![CDATA[%level|%d{yyyy-MM-dd HH:mm:ss}|%m%n}]]></pattern> </layout> </appender> <logger name="dubbo.accesslog" level="INFO" additivity="false"> <appender-ref ref="accesslogAppender"/> </logger>
The above is the demonstration of logback framework.Other logging framework is same too.It will logging the access log of all provide services into single file(accesslog/logging.log). And you can also config the access log of each provide service to logging separately,Only change name attribute of the logger tag,set the name attribute to dubbo.accesslog.serviceInterfaceClassFullName.The Example:
<logger name="dubbo.accesslog.com.dubbo.FooServiceInterface" level="INFO" additivity="false"> <appender-ref ref="fooServiceAccesslogAppender"/> </logger>
If you only want logging the access log of specified provide service,but not all services.It's supported too.The Example:
<dubbo:service accesslog="true" .../>
You can specify the file path with the accesslog attribute.The Example:
<dubbo:protocol accesslog="/home/admin/logs/service/accesslog.log" .../>
OR
<dubbo:service accesslog="/home/admin/logs/service/accesslog.log" .../>