  Misconfigurations have become the dominant causes of software failures in
recent years, drawing tremendous attention for their increasing prevalence and
severity. Configuration constraints can preemptively avoid misconfiguration by
defining the conditions that configuration options should satisfy.
Documentation is the main source of configuration constraints, but it might be
incomplete or inconsistent with the source code. In this regard, prior
researches have focused on obtaining configuration constraints from software
source code through static analysis. However, the difficulty in pointer
analysis and context comprehension prevents them from collecting accurate and
comprehensive constraints. In this paper, we observed that software logs often
contain configuration constraints. We conducted an empirical study and
summarized patterns of configuration-related log messages. Guided by the study,
we designed and implemented ConfInLog, a static tool to infer configuration
constraints from log messages. ConfInLog first selects configuration-related
log messages from source code by using the summarized patterns, then infers
constraints from log messages based on the summarized natural language
patterns. To evaluate the effectiveness of ConfInLog, we applied our tool on
seven popular open-source software systems. ConfInLog successfully inferred 22
to 163 constraints, in which 59.5% to 61.6% could not be inferred by the
state-of-the-art work. Finally, we submitted 67 documentation patches regarding
the constraints inferred by ConfInLog. The constraints in 29 patches have been
confirmed by the developers, among which 10 patches have been accepted.
