diff --git a/CHANGELOG.md b/CHANGELOG.md index 035777600c2676816fab86762e4ac067f2b2f2f1..6a78b5febf846c4d6823bc4a8b07e9784de5a677 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,19 @@ # burrow changelog +## v0.17.0 +This is a service release with some significant ethereum/solidity compatibility improvements and new logging features. It includes: + +- [Upgrade to use Tendermint v0.9.2](https://github.com/hyperledger/burrow/pull/595) +- [Implemented dynamic memory](https://github.com/hyperledger/burrow/pull/607) assumed by the EVM bytecode produce by solidity, fixing various issues. +- Logging sinks and configuration - providing a flexible mechanism for configuring log flows and outputs see [logging section in readme](https://github.com/hyperledger/burrow#logging). Various other logging enhancements. +- Fix event unsubscription +- Remove module-specific versioning +- Rename suicide to selfdestruct +- SNative tweaks + +Known issues: + +- SELFDESTRUCT opcode causes a panic when an account is removed. A [fix](https://github.com/hyperledger/burrow/pull/605) was produced but was [reverted](https://github.com/hyperledger/burrow/pull/636) pending investigation of a possible regression. + ## v0.16.3 This release adds an stop-gap fix to the `Transact` method so that it never transfers value with the `CallTx` is generates. diff --git a/README.md b/README.md index c6d75accaeddf20eff237b8b853f3830fe54bce6..f5746bc543779c51780aea177be226de94e0f3d1 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,46 @@ Once the server has started, it will begin syncing up with the network. At that A commented template config will be written as part of the `monax chains make` [process](https://monax.io/docs/getting-started) and can be edited prior to the `monax chains start` [process](https://monax.io/docs/getting-started). +### Logging +Logging is highly configurable through the `config.toml` `[logging]` section. Each log line is a list of key-value pairs that flows from the root sink through possible child sinks. Each sink can have an output, a transform, and sinks that it outputs to. Below is a more involved example of than the one appearing in the default generated config of what you can configure: + +```toml +# This is a top level config section within the main Burrow config +[logging] + # All log lines are sent to the root sink from all sources + [logging.root_sink] + # We define two child sinks that each receive all log lines + [[logging.root_sink.sinks]] + # We send all output to stderr + [logging.root_sink.sinks.output] + output_type = "stderr" + + [[logging.root_sink.sinks]] + # But for the second sink we define a transform that filters log lines from Tendermint's p2p module + [logging.root_sink.sinks.transform] + transform_type = "filter" + filter_mode = "exclude_when_all_match" + + [[logging.root_sink.sinks.transform.predicates]] + key_regex = "module" + value_regex = "p2p" + + [[logging.root_sink.sinks.transform.predicates]] + key_regex = "captured_logging_source" + value_regex = "tendermint_log15" + + # The child sinks of this filter transform sink are syslog and file and will omit log lines originating from p2p + [[logging.root_sink.sinks.sinks]] + [logging.root_sink.sinks.sinks.output] + output_type = "syslog" + url = "" + tag = "Burrow-network" + + [[logging.root_sink.sinks.sinks]] + [logging.root_sink.sinks.sinks.output] + output_type = "file" + path = "/var/log/burrow-network.log" +``` ## Contribute We welcome all contributions and have submitted the code base to the Hyperledger project governance during incubation phase. As an integral part of this effort we want to invite new contributors, not just to maintain but also to steer the future direction of the code in an active and open process. diff --git a/util/logging/cmd/main.go b/util/logging/cmd/main.go new file mode 100644 index 0000000000000000000000000000000000000000..fc6d16dd616bc3f9b7bc8e99fdedf85eb0ae3d13 --- /dev/null +++ b/util/logging/cmd/main.go @@ -0,0 +1,40 @@ +// Copyright 2017 Monax Industries Limited +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package main + +import ( + "fmt" + + . "github.com/hyperledger/burrow/logging/config" +) + +// Dump an example logging configuration +func main() { + loggingConfig := &LoggingConfig{ + RootSink: Sink(). + AddSinks( + // Log everything to Stderr + Sink().SetOutput(StderrOutput()), + Sink().SetTransform(FilterTransform(ExcludeWhenAllMatch, + "module", "p2p", + "captured_logging_source", "tendermint_log15")). + AddSinks( + Sink().SetOutput(SyslogOutput("Burrow-network")), + Sink().SetOutput(FileOutput("/var/log/burrow-network.log")), + ), + ), + } + fmt.Println(loggingConfig.RootTOMLString()) +}