1 /**
2 * Logback: the reliable, generic, fast and flexible logging framework.
3 * Copyright (C) 1999-2015, QOS.ch. All rights reserved.
4 *
5 * This program and the accompanying materials are dual-licensed under
6 * either the terms of the Eclipse Public License v1.0 as published by
7 * the Eclipse Foundation
8 *
9 * or (per the licensee's choosing)
10 *
11 * under the terms of the GNU Lesser General Public License version 2.1
12 * as published by the Free Software Foundation.
13 */
14 package ch.qos.logback.access.common.pattern;
15
16 import java.util.Arrays;
17
18 import ch.qos.logback.access.common.spi.IAccessEvent;
19 import ch.qos.logback.core.util.OptionHelper;
20
21 public class RequestParameterConverter extends AccessConverter {
22
23 String key;
24
25 @Override
26 public void start() {
27 key = getFirstOption();
28 if (OptionHelper.isNullOrEmpty(key)) {
29 addWarn("Missing key for the request parameter");
30 } else {
31 super.start();
32 }
33 }
34
35 @Override
36 public String convert(IAccessEvent accessEvent) {
37 if (!isStarted()) {
38 return "INACTIVE_REQUEST_PARAM_CONV";
39 }
40
41 String[] paramArray = accessEvent.getRequestParameter(key);
42 if (paramArray.length == 1) {
43 return paramArray[0];
44 } else {
45 // for an array string {"a", "b"} named 'sa', Array.toString(sa) returns the
46 // string
47 // "[a, b]".
48 return Arrays.toString(paramArray);
49 }
50 }
51
52 }